【问题标题】:How to parse category term from Wordpress ATOM feed in PHP?如何在 PHP 中解析 Wordpress ATOM 提要中的类别术语?
【发布时间】:2014-10-22 17:16:18
【问题描述】:

我有一个来自 Wordpress 实例的标准 ATOM 提要。在提要中,会出现以下类别项目:

<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" />

我正在使用以下代码来解析提要:

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);
}

如您所见.. 最后一项拉出“类别”节点。但它返回一个空字符串。我想我知道为什么。所以问题是......实际提取这些术语的语法是什么?

【问题讨论】:

    标签: php wordpress feed atom-feed


    【解决方案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-&gt;nodeValue,你不会得到任何东西,因为节点没有值——它是空的。要获取第一个类别的 term 属性,您需要将当前行替换为:

    'cats' => $node->getElementsByTagName('category')->item(0)->getAttribute('term')
    

    【讨论】:

    • 优秀。感谢您的快速回答!
    猜你喜欢
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 2011-02-23
    • 1970-01-01
    相关资源
    最近更新 更多