如何在PHP中使用SimpleXML列出数组的特定部分?

时间:2016-05-03 15:12:14

标签: php html simplexml

所以我有这个XML文件,我只需要列出特定于每个区域的网站。



<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>
&#13;
&#13;
&#13; 我可以列出所有网站,但无论我尝试什么,我不能让它只列出每个地区的特定网站。我希望这样做,我可以有Region['Region1']->site 之类的东西但显然不起作用。没有使用索引有没有办法做到这一点?

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

1 个答案:

答案 0 :(得分:0)

SimpleXML并不知道id是特殊的,它只是数据的一部分。最简单的方法只是现有循环中一个无聊的旧if语句:

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

您还可以使用the xpath() method,它可以根据XML的内容进行查询:

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