PHP: Xml с несколькими родственными элементами с одинаковым именем, поддерживать порядок

У меня есть файл xml, который выглядит примерно так:

<items>
     <itemA/>
     <itemB/>
     <itemA/>
     <itemA/>
     <itemC/>
 </items>

но мне нужно обработать это с помощью php и сохранить порядок элементов. Я понимаю, как получить доступ к элементам с одним и тем же именем, используя нотацию simplexml и массива, но я не могу найти способ перебрать их все, сохраняя их порядок.


person icode    schedule 22.08.2014    source источник


Ответы (2)


Выберите родительский элемент и выполните итерацию по его дочерним элементам, см. http://php.net/manual/en/simplexmlelement.children.php

$xml = new SimpleXMLElement(
'<items>
     <itemA/>
     <itemB/>
     <itemA/>
     <itemA/>
     <itemC/>
 </items>');

foreach ($xml->children() as $item) {
  //...
}
person Hirnhamster    schedule 22.08.2014

Перебрать дочерние элементы items; Я добавил к ним идентификаторы, чтобы продемонстрировать, что они остаются в порядке.

$xml = new SimpleXMLElement('<items>
     <itemA id="1" />
     <itemB id="2" />
     <itemA id="3" />
     <itemA id="4" />
     <itemC id="5" />
 </items>');

 foreach ($xml->children() as $child) {
    echo "looking at " . $child->getName() . ", id: " . $child['id'] . "\n";
 }

Выход:

looking at itemA, id: 1
looking at itemB, id: 2
looking at itemA, id: 3
looking at itemA, id: 4
looking at itemC, id: 5
person i alarmed alien    schedule 22.08.2014