Я пытаюсь проанализировать некоторые XML-данные, используя php-функцию simplexml_load_string(), однако она не работает на элементах, где есть текст и последующие элементы. Вот пример данных:
<?xml version="1.0"?>
<KPPRINT>
<CURRENTDATE>31/01/2015</CURRENTDATE>
<CURRENTTIME>21:43</CURRENTTIME>
<HEADER>
<ORDERNUMBER>CHECK NO: 69</ORDERNUMBER>
<CHECKNUMBER>ORDER NO: 16</CHECKNUMBER>
<REFTEXT>Party table</REFTEXT>
<REFTEXT>LOCATION 4</REFTEXT>
</HEADER>
<ITEM>VK Ice<QTY>1</QTY><PRICE>£0.03</PRICE><RECORD>57</RECORD><DEPT number="1" name="Wet Sales"/><GROUP number="5" name="FABs"/><CAT number="1" name="CATEGORY 1"/></ITEM>
<ITEM>Bramble<QTY>1</QTY><PRICE>£0.45</PRICE><RECORD>241</RECORD><DEPT number="1" name="Wet Sales"/><GROUP number="10" name="Cocktails"/><CAT number="1" name="CATEGORY 1"/></ITEM>
<ITEM>Gran Seleccion Rioja<QTY>1</QTY><PRICE>£19.95</PRICE><RECORD>225</RECORD><DEPT number="1" name="Wet Sales"/><GROUP number="9" name="Wines & Champagnes"/><CAT number="1" name="CATEGORY 1"/></ITEM>
<TRAILER>
<CLERK>Tom</CLERK>
<MACHINE>S000-T1</MACHINE>
<TIME>21:43</TIME>
<CONSEC>000023</CONSEC>
</TRAILER>
</KPPRINT>
Это результат, который я получаю:
Array
(
[CURRENTDATE] => 31/01/2015
[CURRENTTIME] => 21:43
[HEADER] => Array
(
[ORDERNUMBER] => CHECK NO: 69
[CHECKNUMBER] => ORDER NO: 16
[REFTEXT] => Array
(
[0] => Party table
[1] => LOCATION 4
)
)
[ITEM] => Array
(
[0] => Product 1
[1] => Product 2
[2] => Product 3
)
[TRAILER] => Array
(
[CLERK] => Tom
[MACHINE] => S000-T1
[TIME] => 21:43
[CONSEC] => 000023
)
)
Текст элемента есть, но другие элементы внутри него нет. Есть ли простая функция для функции или мне нужно разобрать всю строку вручную?
Если он не работает с simplexml_load_string()
вы должны попробовать работать с данными как рекурсивные объекты с DOMDocument, потому что он позволяет работать с дочерними узлами, и я думаю, что это не ограничивается. Пожалуйста, прочитайте следующие страницы: http://php.net/manual/en/class.domdocument.php http://www.w3schools.com/php/php_xml_dom.asp