【问题标题】:How to easily access the information of a XML-node in PHP如何在 PHP 中轻松访问 XML 节点的信息
【发布时间】:2019-12-16 07:36:10
【问题描述】:

我在 PHP 中读入一个 XML 文件并将其分配给一个变量 $Xml

$Xml = simplexml_load_file("TaskSequences.xml");

XML 文件如下所示:

<?xml version="1.0" encoding="utf-8"?>
<MyStructure>
  <Sequences>
    <Sequence>
      <SequenceName>Sequence1</SequenceName>
      <SequencePackages>
        <Package>
          <PackageName>Package1</PackageName>
          <TargetInfo>HowToAccessThis</TargetInfo>
        </Package>
        <Package>
          <PackageName>Package2</PackageName>
          <TargetInfo>BlaBla</TargetInfo>
        </Package>
      </SequencePackages>
    </Sequence>
  </Sequences>
</MyStructure>

我的代码中有以下变量/信息:
序列名称:“序列 1
包名:“包1

基于此我想访问节点“TargetInfo”中的相应信息。 至于上面的例子,结果应该是“HowToAccessThis”。

是否需要循环?最简单的方法是什么?

谢谢!

【问题讨论】:

    标签: php xml xpath


    【解决方案1】:

    在使用 XML 时,值得学习一些关于 XPath 的知识,因为它可以为您执行相当多的工作。

    此代码使用//Sequence[SequenceName="Sequence1"]//Package[PackageName="Package1"]/TargetInfo 查找您要查找的数据,这分解为...

    • //序列-文档中的任何&lt;Sequence&gt;元素
    • [SequenceName="Sequence1"] - 匹配 &lt;SequenceName&gt; 元素 whos 文本是 Sequence1
    • //包 - 在任何&lt;Package&gt;元素内
    • [PackageName="Package1"] - 有一个 &lt;PackageName&gt; 元素 whos 文字是 Package1
    • /TargetInfo - 然后获取&lt;TargetInfo&gt; 元素。

    所以代码

    $SequenceName = "Sequence1";
    $PackageName = "Package1";
    echo $Xml->xpath('//Sequence[SequenceName="'.$SequenceName.'"]//Package[PackageName="'.$PackageName.'"]/TargetInfo')[0];
    

    用你的测试数据给出...

    HowToAccessThis
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多