XML - simplexml_load_file - foreach

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XML - simplexml_load_file - foreach相关的知识,希望对你有一定的参考价值。

我需要在我的项目中从xml中呼应xml数据。

我使用simplexml_load_file

我有

      <group>
        <admin>
          <id>605</id>
        </admin>
        <members>
          <id>2154</id>
          <id>2256</id>
          <id>3179</id>
        </menbers>
      </group>
      <group>
        <admin>
          ....
        </admin>
        <members>
          ...
          ...
        </members>
      </group>

我的代码是

$soubor="platebniudaje.xml";
$xml = simplexml_load_file($soubor);


  foreach ($xml->group as $group)  
        echo $group->admin->id . "<br>"; 

        foreach ($group->members as $members) 
            echo $members->id . "<br>";
        

  

我的输出是

605
2154

但我需要

605
2154
2256
3179

你能帮我吗?哪里出错了?

答案

我不确定这是否是你要找的东西,但根据你问题中的xml片段,这个。

foreach($xml->xpath('//group//id') as $node) 

    echo $node, php_EOL;

应该是这样的

605
2154
2256
3179
另一答案

你可以有一个或多个id,所以你也可以循环这些。

请注意,在xml中有一个类型 </menbers>

foreach ($xml->group as $group) 
    echo $group->admin->id . PHP_EOL;
    foreach ($group->members as $member) 
        foreach($member->id as $id)
            echo $id . PHP_EOL;
    

或更短的版本,如果成员只发生一次,如所指出。@Nigel Ren

foreach ($xml->group as $group) 
    echo $group->admin->id . PHP_EOL;
    foreach ($group->members->id as $id)
        echo $id . PHP_EOL;

产量

605
2154
2256
3179

Php演示

以上是关于XML - simplexml_load_file - foreach的主要内容,如果未能解决你的问题,请参考以下文章

XML - simplexml_load_file - foreach

PHP:simplexml_load_file 从使用 UTF-8 编码的 XML 文件中获取奇怪的字符

simplexml_load_file 通过 url 读取远程 xml,由对等方重置连接

simplexml_load_file():I/O 警告:未能加载外部实体“/user-bundle/Resources/config/doctrine/model/User.orm.xml

simplexml_load_file 抑制警告的直接输出

想要使用 cURL 而不是 SimpleXML_load_file()