首页 > 解决方案 > 检索特定 xml 数据的问题

问题描述

在过去的几个小时里,我一直在尝试从 XML 文件https://cdn.animenewsnetwork.com/encyclopedia/api.xml?title=1中检索特定数据

我试图检索的数据位于“流派”类型,理想情况下,由于不同的 XML 文件具有不同数量的“流派”,我一直试图将“流派”放入循环中。

我一直在阅读 XML 和 PHP 手册以及谷歌搜索以找到可能的解决方案,但我画了一个空白,如果有人能够指出我正确的方向,我将不胜感激,谢谢。

我尝试使用 if 语句,但预期的结果不是显示的

$url = "https://cdn.animenewsnetwork.com/encyclopedia/api.xml?title=1";

$result = simplexml_load_file($url);

foreach ($result->anime as $data) {

foreach ($result->anime as $data) {
    if ($a['type'] = "Genres") {
        foreach ($data->info as $info) {
            $a = $info->attributes();
            echo $a['type']." : ".$a['src'] .$info. "<br>";
        }
    }
}

我希望输出介于 > 和 < 括号之间的任何类型,类型为“流派”,预期输出应该是“动作戏剧科幻”,但实际输出是从“图片”到“官网”的所有数据从 XML 文件。

标签: phpxml

解决方案


您的代码中有一些错误,但您也可以实现您想要的,而无需自己测试每个属性。使用 XPath 允许您检索所需元素的列表。

此代码使用//info[@type='Genres']which 表示任何<info>具有type等于的属性的节点Genres。调用xpath()将返回一个仅包含匹配元素的列表,因此无需再测试任何内容,只需输出您之后的信息...

$url = "https://cdn.animenewsnetwork.com/encyclopedia/api.xml?title=1";

$result = simplexml_load_file($url);

foreach ($result->xpath("//info[@type='Genres']") as $data) {
    echo $data['type']." : " .(string)$data. "<br>";
}

推荐阅读