【问题标题】:PHP - Unable to access certain elements with Simple XML [duplicate]PHP - 无法使用简单 XML 访问某些元素 [重复]
【发布时间】:2013-12-13 07:45:27
【问题描述】:

SimpleXML 是否只允许访问具有特定名称的元素?我一直在尝试从一些 rss 提要中获取发布日期,当日期包含在 pubDate 标记内时,这是可能的,但是我遇到了将日期保存在名为“dc:date”的标记内的提要"

<dc:date>2013-12-12T22:30:46+00:00</dc:date>

当我 print_r 时,项目看起来像这样

$rss = simplexml_load_file($source_url);

[0] => SimpleXMLElement Object
                    (
                        [title] => NEWS: Mayday Parade post 2014 Vans Warped Tour announcement video
                        [link] => http://www.altpress.com/news/entry/mayday_parade_post_2014_vans_warped_tour_announcement_video
                        [guid] => http://www.altpress.com/news/entry/mayday_parade_post_2014_vans_warped_tour_announcement_video
                    )

没有直流日期的迹象。这是 SimpleXML 行为吗?我怎么可能访问日期,我正在访问的提要是这个:http://www.altpress.com/rss

【问题讨论】:

    标签: php xml rss


    【解决方案1】:

    正如SimpleXMLElement::children documentation 所述,如果您想查询任何非默认(例如 NULL)命名空间子级,则必须明确提供命名空间。

    例如考虑:

    $xml = '<?xml version="1.0" encoding="UTF-8" ?> 
    <rss xmlns:dc="my.dc.urn"> 
        <channel> 
            <item> 
                <title>Tom And Jerry</title> 
                <category>Comicbook</category>
                <dc:date>2013-12-12T22:30:46+00:00</dc:date>
            </item> 
        </channel> 
    </rss>
    ';
    
    $rss = simplexml_load_string($xml);
    
    $item = $rss->channel[0]->item[0];
    
    print_r($item->children());
    //prints out "title" and "category"
    
    print_r($item->children("dc", true));
    //prints out "date" within the "dc" namespace (e.g. "dc:date")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-23
      • 1970-01-01
      • 2011-02-10
      • 1970-01-01
      • 2020-07-01
      • 2021-03-02
      • 1970-01-01
      相关资源
      最近更新 更多