代码之家  ›  专栏  ›  技术社区  ›  blitz94

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

  •  0
  • blitz94  · 技术社区  · 8 年前

    所以我有这个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>
    我可以列出所有的网站,但无论我做什么,我都无法让它只列出特定于每个地区的网站。我想用一种方式来做这件事 Region['Region1']->site 但显然这行不通。有没有不使用索引的方法?
    foreach ($xls2cli->Region as $Region){
                echo $Region[id]."<br>";
                    foreach ($Region->site as $site){
                        echo $site."<br>"; }    }
    
    1 回复  |  直到 8 年前
        1
  •  0
  •   IMSoP    8 年前

    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>"; 
        }
    }