PHP读取XML文件无法输出所有name节点内容问题求助
解决PHP读取XML中所有name节点的问题
你的问题出在XML层级遍历错误上,我们来一步步分析和修复:
问题根源
先看你的XML结构(简化后):
<data> <result> <index-1> <name>paris</name> <!-- ...其他节点 --> </index> <index-2> <name>london</name> <!-- ...其他节点 --> </index> </result> </data>
你原代码里的$xml->children()是遍历<data>的直接子元素,也就是只有<result>这一个元素。之后你试图从<result>里取name,但name其实在<result>的子节点(<index-1>、<index-2>)里,所以自然拿不到数据。
修复方案1:修正遍历层级
只需要调整遍历的节点,先定位到<result>,再遍历它的子元素:
<?php $xml = simplexml_load_file("hc.xml") or die("Error: Cannot create object"); // 先获取<result>节点,再遍历它的子节点(index-1、index-2等) foreach($xml->result->children() as $index) { echo $index->name . ", "; echo "<br>"; } ?>
修复方案2:使用XPath直接定位(更灵活)
如果XML结构可能变化,用XPath直接选取所有name节点会更稳妥,不用关心层级:
<?php $xml = simplexml_load_file("hc.xml") or die("Error: Cannot create object"); // 用XPath表达式选取所有name节点 $names = $xml->xpath("//name"); foreach($names as $name) { echo $name . ", "; echo "<br>"; } ?>
这两种方案都能正确输出paris和london,而且不需要修改你的XML文件。
内容的提问来源于stack exchange,提问作者elite andot
相关产品推荐
相关产品推荐

