【问题标题】:How to loop through multiple identical XML Tags?如何遍历多个相同的 XML 标签?
【发布时间】:2017-09-20 14:35:26
【问题描述】:

所以我有一个 XML 我正在解析并将数据加载到数据库中。但是,我当前的代码只列出了 3 个名称中的 1 个。

以下面的例子为例,我的代码只加载了类名 Alpha1。有没有一种方法可以循环遍历所有“代码”标签?

<ClassList>
    <Class>
        <Code>Alpa1</Code>
    </Class>
    <Class>
        <Code>Bravo1</Code>
    </Class>
    <Class>
        <Code>Charlie1</Code>
    </Class>        
</ClassList>

我的 PHP 代码如下:

$ClassCode  = $xmlfiles->ClassList->Class->Code;

非常感谢任何帮助。

【问题讨论】:

标签: php xml


【解决方案1】:

最简单的方法可能是两个循环,见https://eval.in/865302

foreach ($sxml->Class as $class) {
  foreach ($class->Code as $code) {
    echo (string) $code, PHP_EOL;
  }
}

您的代码不起作用的原因是该行

$xmlfiles->ClassList->Class->Code;

$xmlfiles-&gt;ClassList[0]-&gt;Class[0]-&gt;Code 的简写。您可以遍历它,但您只能在第一个 &lt;Class&gt; 标记内进行操作。另请注意,SimpleXML 对象将自动“锚定”到根 &lt;ClassList&gt; 标记,因此您不需要包含它。

另一种选择是使用XPath,它允许您指定任意选择器:

foreach ($sxml->xpath('Class/Code') as $code) {
  echo (string) $code, PHP_EOL;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-23
    相关资源
    最近更新 更多