XML - simplexml_load_file - foreach - PullRequest
1 голос
/ 28 мая 2020

Мне нужны для моего проекта эхо 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

Вы можете мне помочь? Где ошибка?

Ответы [ 2 ]

1 голос
/ 28 мая 2020

Я не уверен, что это то, что вы ищете, но, основываясь только на фрагменте xml в вашем вопросе, это:

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

    echo $node, PHP_EOL;
}

должно выводить:

605
2154
2256
3179
0 голосов
/ 29 мая 2020

У вас может быть один или несколько идентификаторов, поэтому вы также можете oop их.

Обратите внимание, что в 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;
    }
}

есть тип. Или более короткая версия, если члены встречаются только один раз, как указано @ Найджел Рен

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 демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...