2017-09-20 14 views
0

私はXMLを解析し、DBにデータをロードしています。しかし、私の現在のコードは3つの名前のうち1つだけをリストしています。複数の同一の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

可能な重複:

別のオプションを使用すると、任意のセレクタを指定することを可能にする、XPathを使用することです19561657/loop-through-an-xml-object-with-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>タグに自動的に「アンカー」されるため、これを含める必要はありません。 (https://stackoverflow.com/questions/ [SimpleXMLを持つXMLオブジェクトを介してループ]の

foreach ($sxml->xpath('Class/Code') as $code) { 
    echo (string) $code, PHP_EOL; 
} 
関連する問題