RSS中的PHP getElementsByTagName忽略具有domain属性的类别标记

时间:2013-05-15 22:20:50

标签: php rss

我正在尝试使用以下PHP解析RSS文件:

$doc = new DOMDocument();
$doc->load($address);
$feedArr = array();
foreach ($doc->getElementsByTagName('item') as $node) {
$itemRSS = array ( 
  'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
  'link' => $node->getElementsByTagName('link')->item(0)->nodeValue,
  'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue
  );
foreach($node->getElementsByTagName('category') as $catNode) {
$itemRSS['category'][] = $catNode->nodeValue;
}
}

除非类别节点具有域属性,否则它可以正常工作。当它发生时,似乎完全忽略了它的类别。

任何想法为什么?

1 个答案:

答案 0 :(得分:0)

您可以像这样访问XML属性:

'whatever' => $node->getElementsByTagName('node')->getAttribute('category')

所以我认为你应该只修改你的循环:

foreach($node->getElementsByTagName('node')->getAttribute('category') as $catNode) {
}

虽然我可能对语法略有不同,因为我还没有用PHP编写一段时间,虽然getAttribute肯定是你想要的。

实际上,这里有一个很好的教程,在PHP中使用Simplexml函数:http://webtutsdepot.com/2009/07/26/how-to-parse-xml-with-php-part2-xml-with-atrributes/