如果存在,如何获取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-&gt;xpath('//PersonalInformation') as $product_xml) 获取所有个人标签的信息 很高兴我能帮上忙。您能否将您的解决方案发布为答案并将其标记为正确答案。这样,任何来这篇文章的人都会立即看到解决方案。【参考方案2】:

感谢您的帮助,我得到了解决方案。

我们可以使用

获取所有个人标签的信息
foreach($temp_xml->xpath('//PersonalInformation') as $product_xml)

  $name = $product_xml'Name';

  $grade = $product_xml'grade';


通过这种方式我们可以读取任何值。它对我有用。

【讨论】:

以上是关于如果存在,如何获取xml文件的子节点,否则使用php跳转到下一个节点的主要内容,如果未能解决你的问题,请参考以下文章

WPF 关于XDocument(xml) 的部分操作记录

如何反序列化xml文件的子节点

python xml minidom 获取包含子节点和文本的子节点的全部内容

获取选定节点的子计数

如何获取具有相同名称的元素并根据 XSLT 中的子节点值对它们进行排序

如何在 PHP 中使用 DOM 或 XPATH 获取最近的子节点而不是嵌套的子节点