php - 检索特定 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 文件。
解决方案
您的代码中有一些错误,但您也可以实现您想要的,而无需自己测试每个属性。使用 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>";
}
推荐阅读
- c# - YouTube API“每天查询”超过约 3 小时
- admob - 如何从商品详情中删除“包含广告”
- java - 尝试打开 GUI 时出现 org.bukkit.command.CommandException
- c# - 按多列分组为对象和相关列表
- amazon-web-services - 如何从 AWS CLI 创建 Amplify React 应用程序
- python - 我的方块怎么不动?我向箭头键发送垃圾邮件,但代码没有给出错误,只是没有按照预期的方式工作
- javascript - 按日期排序,每 24 小时有限制条目
- sql - 在oracle sql的计算列中将十进制值转换为非十进制
- autodesk-forge - 如何获取超过 100 个存储桶对象?如何列出所有存储桶对象?
- linux - Linux 快照应用程序