如何获取getElementsByTagNameNS内容?

时间:2013-01-31 15:40:29

标签: php dom rss

我正在尝试阅读和解析RSS提要。 RSS提要的标题如下:

<rss version="2.0" xmlns:content="http://www.mywebsite.com" xmlns:media="http://search.yahoo.com/mrss/" >

我从项目中成功检索了<title><link>,但我似乎无法找到检索<content:encoded>个孩子的方法。这就是我到目前为止所做的:

<?php

//error_reporting(E_ALL);
//ini_set("display_errors", 1);

....

$x=$xmlDoc->getElementsByTagName('item');

foreach($x as $item) {
    $link = $item->getElementsByTagName('link')->item(0)->nodeValue;
    $title = $item->getElementsByTagName('title')->item(0)->nodeValue;
    $content = $item->getElementsByTagNameNS('http://www.mywebsite.com', 'encoded')->item(0);
    echo ("<p><a href='" . $link. "'>" . $title . "</a></p><p>" . $content . "</p>");
}

?>

您可以想象$content即使我尝试获取nodeValue属性也是空的,我在这里缺少什么?

2 个答案:

答案 0 :(得分:1)

我最终使用了SimpleXmlElement:

$x = new SimpleXmlElement($s);

foreach($x->channel->item as $entry) {

    $content = $entry->children("content", true);
    echo "<p>".$content->encoded."</p>";
}

像魅力一样。

答案 1 :(得分:1)

此处的标记名称为“已编码”。

只需使用

$content => $node->getElementsByTagName('encoded')->item(0)->nodeValue