如果存在,如何获取xml文件的子节点,否则使用php跳转到下一个节点
Posted
技术标签:
【中文标题】如果存在,如何获取xml文件的子节点,否则使用php跳转到下一个节点【英文标题】:how to fetch the child node of a xml file if exists otherwise jump to next node using php 【发布时间】:2012-08-31 02:33:40 【问题描述】:我有一个类似于下面的 XML 文件
<Navigation Name="Klengeräte">
<Market Type="Navigation"></Market>
<Navigation Name="Bodenpflege">
<Market Type="Navigation"></Market>
<Navigation Name="Wöchentches">
<Market Type="Navigation">
</Market>
<Navigation Name="Ultra One">
<personalinfo>
<Name> testing</Name>
<grade> A </grade>
<info> test information </info>
</personalinfo>
</Navigation>
</Navigation>
<personalinfo>
<Name> testing</Name>
<grade> A </grade>
<info> test information </info>
</personalinfo>
<personalinfo>
<Name> testing</Name>
<grade> A </grade>
<info> test information </info>
</personalinfo>
</Navigation>
</Navigation>
我想读取 XML 中的个人信息标签
如果有任何案例问题请忽略,我尝试了很多方法但没有找到正确的解决方案。
【问题讨论】:
阅读以下链接 [***.com/questions/699821/… [***.com/questions/3646153/… [***.com/questions/6884142/… [1]: ***.com/questions/699821/… [2]: ***.com/questions/3646153/… [3]: ***.com/questions/6884142/…跨度> 感谢您的链接。我已经浏览了这个链接,但我没有找到任何确切的解决方案。如果你找到任何请告诉我。 【参考方案1】:您可以通过使用 DOMDocument 获取“个人信息”标签并使用 foreach 和 DOMNode 进行迭代来做到这一点。
$parser = new DOMDocument();
$parser->loadXML($xml);
$infos = $parser->getElementsByTagName('personalinfo');
foreach($infos as $info)
foreach($info->childNodes as $infoChild)
echo $infoChild->nodeName . '====' . $infoChild->nodeValue . '<br>';
这不是一个完美的解决方案,但它应该让您朝着正确的方向开始。请参阅 http://codepad.viper-7.com/f4u9FC 以了解您的 xml 的实现。
【讨论】:
我可以使用简单的 xml 获得解决方案吗?这里我只使用简单的 xml。 我没有使用 SimpleXml 的经验。查看文档,php.net/manual/en/simplexml.examples.php。 感谢您的帮助,我得到了解决方案。我们可以使用foreach($temp_xml->xpath('//PersonalInformation') as $product_xml)
获取所有个人标签的信息
很高兴我能帮上忙。您能否将您的解决方案发布为答案并将其标记为正确答案。这样,任何来这篇文章的人都会立即看到解决方案。【参考方案2】:
感谢您的帮助,我得到了解决方案。
我们可以使用
获取所有个人标签的信息foreach($temp_xml->xpath('//PersonalInformation') as $product_xml)
$name = $product_xml'Name';
$grade = $product_xml'grade';
通过这种方式我们可以读取任何值。它对我有用。
【讨论】:
以上是关于如果存在,如何获取xml文件的子节点,否则使用php跳转到下一个节点的主要内容,如果未能解决你的问题,请参考以下文章
python xml minidom 获取包含子节点和文本的子节点的全部内容