如何用PHP中的Wordpress ATOM提要解析类别术语?

时间:2014-10-22 17:16:19

标签: php wordpress feed atom-feed

我有一个来自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;节点。但它返回一个空字符串。我想我知道为什么。所以问题是......实际提取术语的语法是什么?

1 个答案:

答案 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')