【问题标题】:Missing children in XML parsed by SimpleXML in PHP在 PHP 中由 SimpleXML 解析的 XML 中缺少子项
【发布时间】:2017-11-03 05:20:46
【问题描述】:

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

当我使用 simplexml_load_file($url) 抓取并解析 XML 然后对其执行 var_dump 时,它显示每个“项目”的唯一子项是“标题”、“链接”、“guid”和“发布日期。”

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

【问题讨论】:

  • 在网站或互联网上的 xml 中使用命名空间

标签: php xml simplexml


【解决方案1】:

要获取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..

【讨论】:

    猜你喜欢
    • 2017-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    相关资源
    最近更新 更多