2017-09-20 45 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; 
}