如何遍历多个相同的XML标签?

时间:2017-09-20 14:35:27

标签: php xml

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

以下面的例子,我的代码只加载了Class name Alpha1。有没有办法让我可以遍历所有" Code"标签

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

我的PHP代码如下:

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

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

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

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

您的代码无效的原因是该行

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

$xmlfiles->ClassList[0]->Class[0]->Code的简写。你可以循环使用它,但是你只能在第一个<Class>标签内操作。另请注意,SimpleXML对象将自动“锚定”到根<ClassList>标记,因此您无需包含该标记。

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

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