Задать вопрос
@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 недавно, возможно кто-то сталкивался с этим, подскажите, пожалуйста.
  • Вопрос задан
  • 136 просмотров
Подписаться 1 Средний 3 комментария
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
а чем simpleXml не устроил? порядок не меняется, на выходе объект наследующий ArrayAccess
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽