我有一个来自Wordpress实例的标准ATOM源。在Feed中,会显示以下类别项:
<category scheme="http://alpha-s2new.simplescienceinc.com/blog" term="Blog" />
<category scheme="http://alpha-s2new.simplescienceinc.com/blog" term="Mobile" />
<category scheme="http://alpha-s2new.simplescienceinc.com/blog" term="Websites" />
我使用以下代码解析Feed:
foreach ($rss->getElementsByTagName('entry') as $node) {
$item = array(
'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
'desc' => $node->getElementsByTagName('content')->item(0)->nodeValue,
'link' => $node->getElementsByTagName('link')->item(0)->nodeValue,
'date' => $node->getElementsByTagName('updated')->item(0)->nodeValue,
'author' => $node->getElementsByTagName('name')->item(0)->nodeValue,
'postid' => $node->getElementsByTagName('id')->item(0)->nodeValue,
'cats' => $node->getElementsByTagName('category')->item(0)->nodeValue
);
array_push($feed, $item);
}
正如你所看到的......最后一项是拉出&#34;类别&#34;节点。但它返回一个空字符串。我想我知道为什么。所以问题是......实际提取术语的语法是什么?
答案 0 :(得分:1)
term
是一个属性,因此您需要使用getAttribute
从中获取数据。例如:
// $dom is the DOMDocument object holding the XML
$cats = $dom->getElementsByTagName('category');
foreach ($cats as $c) {
echo "term: " . $c->getAttribute('term') . PHP_EOL;
}
输出:
term: Blog
term: Mobile
term: Websites
如果你正在使用$c->nodeValue
,你将得不到任何东西,因为节点没有值 - 它是空的。要获得第一个类别的term属性,您需要用以下代码替换当前行:
'cats' => $node->getElementsByTagName('category')->item(0)->getAttribute('term')