2016-05-03 10 views
0

私はこのXMLファイルを持っており、各地域に固有のサイトだけをリストアップする必要があります。PHPでSimpleXMLを使用して配列の特定の部分をリストする方法は?

<xls2cli> 
 
    <Region id="Region1"> 
 
     <site>Site1</site> 
 
     <site>Site2</site> 
 
    </Region> 
 
    <Region id="Region2"> 
 
     <site>Site3</site> 
 
     <site>Site4</site> 
 
     <site>Site5</site> 
 
     <site>Site6</site> 
 
    </Region> 
 
    <Region id="Region3"> 
 
     <site>Site 7</site> 
 
    </Region> 
 
</xls2cli>
私はすべてのサイトを一覧表示することができていますが、関係なく、私がしようとするもの、私はそれが各地域に特定のサイトのみをリストするために取得しない傾けます。私はそれが私が Region['Region1']->siteのような何かを持つことができる方法を探していますが、明らかにそのdo​​esntの仕事。インデックスを使用せずにこれを行う方法はありますか?

foreach ($xls2cli->Region as $Region){ 
      echo $Region[id]."<br>"; 
       foreach ($Region->site as $site){ 
        echo $site."<br>"; } } 

答えて

0

のSimpleXMLはidは特別な何かがあることを知りませんが、それはデータのほんの一部です。

foreach ($xls2cli->xpath('./Region[@id="Region1"]') as $Region) { 
    echo $Region['id']."<br>"; 
    foreach ($Region->site as $site){ 
     echo $site."<br>"; 
    } 
} 
+0

第1の方法は完璧に動作します:

foreach ($xls2cli->Region as $Region){ if($Region['id'] == 'Region1') { echo $Region['id']."<br>"; foreach ($Region->site as $site){ echo $site."<br>"; } } } 

ます。また、XMLの内容に基づいてクエリを行うことができ、the xpath() methodを使用することができます。最も簡単な方法は、既存のループの中だけで退屈な古いif文ですそして私が感謝のために探していたもの! xpathを使用しても私のために何も表示されません。それは私が "$ xls2cli = simplexml_load_file("/var/www/html/uploads/"。$ filename);"私は前にxpathを試して、 "Array {0}"出力を得続けました。 – blitz94

+0

@blitz94いいえ、それはXPathがうまくいかないからです:P式は './Region[@id=" Region1 "]' – IMSoP

関連する問題