所以我有一个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;
非常感谢任何帮助。
答案 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;
}