我试图使用php函数simplexml_load_string()解析一些XML数据,但它似乎不适用于有文本和其他元素的元素。以下是一个示例数据:
<?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
)
)
元素文本在那里,但其中的其他元素不是。函数有一个简单的选项,还是需要手动解析整个字符串?
答案 0 :(得分:0)
如果它不能与simplexml_load_string()
一起使用,你应该尝试将数据作为带有DOMDocument的递归对象,因为它允许使用子节点,我认为它不受限制。
请考虑阅读以下页面:
http://php.net/manual/en/class.domdocument.php
http://www.w3schools.com/php/php_xml_dom.asp