PHP中的SimpleXML解析的XML中缺少子项

时间:2017-11-03 05:20:47

标签: php xml simplexml

这是我正在解析的XML: https://seekingalpha.com/api/sa/combined/AAPL.xml

当我使用simplexml_load_file($ url)抓取并解析XML然后对其执行var_dump时,它显示每个“item”的唯一子节点是“title”,“link”,“guid”和“ pubdate的“。

我正在尝试访问节点“sa:author_name”。为什么它不是“项目”的孩子?也许我误解了XML文件的结构。帮助我,我的孩子们失踪了哈哈尔

1 个答案:

答案 0 :(得分:0)

要获取sa:author_name中的数据,您必须使用命名空间https://seekingalpha.com/api/1.0

例如,您可以使用foreach并使用命名空间循环children

$url = "https://seekingalpha.com/api/sa/combined/AAPL.xml";
$xml = simplexml_load_file($url);

foreach ($xml->channel->item as $item) {
    foreach ($item->children("https://seekingalpha.com/api/1.0") as $child) {
        if ($child->getName() === "author_name") {
            echo $child . "<br>";
        }
    }
}

另一种方法是使用xpath表达式:

$authorNames = $xml->xpath('/rss/channel/item/sa:author_name');

foreach ($authorNames as $authorName) {
    echo $authorName . "<br>";
}

这将导致:

Yoel Minkoff
DoctoRx
SA Transcripts
Bill Maurer
etc..