@xzkovlol

Как парсить xml в php с сохранением порядка дочерних элементов без объединения в массив?

Сломал голову, нужны умные мысли!

При парсинге xml в массив на php использую цепочку xml->dom->json->array. При этом, если дочерние элементы одинаковые, то они собираются в массив, а если различны - то в несколько массивов. Проблема в том, что мне нужно точно знать порядок элементов в xml. или сохранить его.

Xml имеет следующую структуру:

<m>
    <a>
        <p/>
        <r>7</r>
        <a>
            <d/>
            <r>2</r>
            <r>5</r>
        </a>
    </a>
    <i>p</i>
    <i>p</i>
    <r>3</r>
    <r>3</r>
    <i>p</i>
</m>


Хочу получить:

[0] => <a>(*?)</a>,
[1] => <i>p<i>,
и т.д.


Или:

<m>
   <a n="0">(*?)</a>
   <i n="1">p</i>
   и т.д.
</m>


Первое, что пришло в голову - добавить к каждому дочернему тегу атрибут с номером. Реализовать не удалось, пробовал через регулярные выражения. Второе - спарсить так, чтобы каждый элемент был элементом в нумерованном массиве, пробовал через все варианты парсинга, так не выходит.

Я php недавно, возможно кто-то сталкивался с этим, подскажите, пожалуйста.
  • Вопрос задан
  • 131 просмотр
Пригласить эксперта
Ответы на вопрос 1
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
а чем simpleXml не устроил? порядок не меняется, на выходе объект наследующий ArrayAccess
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы