如何在php中使用getElementsByTagNameNS检索属性?

时间:2011-05-11 19:51:53

标签: php xml

我想从“http://rapfix.mtv.com/feed”获取我正在创建的网站的新闻Feed。除了能够为每篇文章提取图像的URL位置之外,我还有其他工作。

在此Feed中,图片网址在代码中显示如下:

<media:content url="http://rapfix.mtv.com/wp-content/uploads/2011/05/tyler-handcuff.jpg" type="image/jpeg" height="300" width="575">
<media:text type="plain"><![CDATA[tyler-handcuff]]></media:text>
</media:content>

我从另一个stackoverflow问题中读到,您可以使用以下内容从节点中提取信息:

$item_pic = $article->getElementsByTagNameNS('http://purl.org/rss/1.0/modules/content/', 'content')->item(0);

但是现在,我正试图从中获取“URL”属性。以下是我的代码:

$xml=("http://rapfix.mtv.com/feed");

$xmlDoc = new DOMDocument();
$xmlDoc->load($xml);

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

foreach($x as $article){
        $item_title = $article->getElementsByTagName('title')->item(0)->nodeValue;
    $item_link = $article->getElementsByTagName('link')->item(0)->nodeValue;
    $item_desc = $article->getElementsByTagName('description')->item(0)->nodeValue;
    $item_pic = $article->getElementsByTagNameNS('http://purl.org/rss/1.0/modules/content/', 'content')->item(0);

        echo ("<strong><a href='".$item_link."' target='_blank'>".$item_title."</a></strong><br />");
    echo ("<div><div class='FloatLeft'><img src='".$item_pic."' width='100' height='100'/></div><div class='FloatLeft'>".$item_desc." - <a href='".$item_link."' target='_blank'>Read More</a></div>^");
}

关于如何完成这项工作的任何想法?

1 个答案:

答案 0 :(得分:1)

目标元素的命名空间是媒体。元素名称是内容。媒体名称空间的名称空间URL为http://search.yahoo.com/mrss/。因此:

foreach($x as $article)
{
        $nlContent = $article->getElementsByTagNameNS('http://search.yahoo.com/mrss/', 'content');
        if( $nlContent->length > 0 )
                $item_pic = $nlContent->item(0)->getAttribute('url');
        else
                $item_pic = '/images/noimageavailable.jpg';
        echo $item_pic . "\n";
}