元素中的PHP simplexml_load_string()元素

时间:2015-02-02 20:35:37

标签: php xml-parsing simplexml

我试图使用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>&#163;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>&#163;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>&#163;19.95</PRICE><RECORD>225</RECORD><DEPT number="1" name="Wet Sales"/><GROUP number="9" name="Wines &amp; 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
        )

)

元素文本在那里,但其中的其他元素不是。函数有一个简单的选项,还是需要手动解析整个字符串?

1 个答案:

答案 0 :(得分:0)

如果它不能与simplexml_load_string()一起使用,你应该尝试将数据作为带有DOMDocument的递归对象,因为它允许使用子节点,我认为它不受限制。 请考虑阅读以下页面: http://php.net/manual/en/class.domdocument.php http://www.w3schools.com/php/php_xml_dom.asp