2017-09-20 20 views
0

所以我有一个XML我正在解析和加载数据到数据库。不过,我目前的代码只列出了三个名字中的一个。如何遍历多个相同的XML标签?

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

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

我的PHP代码是如下:

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

任何帮助深表感谢。

+2

的可能的复制19561657 /环通-AN-XML的对象与 - simplexml的) – KhorneHoly

回答

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,其允许用户指定的任意的选择:[通过用SimpleXML XML对象循环](https://stackoverflow.com/questions/

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