Мне нужно преобразовать XML-файл в массив, используя какое-то очень простое и быстрое решение. Это один был хорошо выглядеть для меня:Несогласованный разбор XML
json_decode(json_encode(simplexml_load_string($xmlContent, "SimpleXMLElement", LIBXML_NOCDATA)), true);
Проблема с этим состоит в том, что он рассматривает несколько детей как индексированный массив, состоящий из ассоциативного массива для каждого ребенка, но если это только один ребенок в родительском теге, это Безразлично Создайте индексированный массив с одним элементом и поместите соответствующий массив непосредственно в элемент родительского тега. Мне нужно, чтобы результат этих сценариев был последовательным. То есть индексированный массив сначала не зависит от количества детей. Моя цель - последовательная схема после разбора.
Пример нескольких детей:
Вход:
<PICK_NOTE_LINES>
<LINE>
<PICK_LINE_NUM>1</PICK_LINE_NUM>
<PRODUCT_CODE>3342</PRODUCT_CODE>
<BATCH_CODE></BATCH_CODE>
<QUANTITY>1</QUANTITY>
</LINE>
<LINE>
<PICK_LINE_NUM>2</PICK_LINE_NUM>
<PRODUCT_CODE>5285</PRODUCT_CODE>
<BATCH_CODE></BATCH_CODE>
<QUANTITY>1</QUANTITY>
</LINE>
</PICK_NOTE_LINES>
выход (я индексированный массив в линии родительского элемента):
['PICK_NOTE_LINES'=>['LINE'=>[['PICK_LINE_NUM'=>1, ...],['PICK_LINE_NUM'=>2, ...]]]
Пример одного ребенка:
<PICK_NOTE_LINES>
<LINE>
<PICK_LINE_NUM>1</PICK_LINE_NUM>
<PRODUCT_CODE>3342</PRODUCT_CODE>
<BATCH_CODE></BATCH_CODE>
<QUANTITY>1</QUANTITY>
</LINE>
</PICK_NOTE_LINES>
вывода (ассоциативный массив в строке родительского элемента):
['PICK_NOTE_LINES'=> ['LINE'=>['PICK_LINE_NUM'=>1, ...]]]
Можно ли получить его всегда помещая детей в индексный массив, даже если это только один ребенок? Если это невозможно, что я могу использовать для получения последовательного вывода?
Очевидно, что это невозможно с вашим текущим кодом.Измените его, чтобы делать то, что вам нужно –
@u_mulder Я подумал, что, возможно, есть некоторые варианты парсера, которые позволят это. – Sergey