0
AI具有包含屬性和值的XML。我想將它轉換爲數組或數組對象以及屬性和值。將PHP XML轉換爲具有屬性和值的數組/對象
XML
<?xml version="1.0" encoding="UTF-8"?>
<itemBody>
<div label="options">
<optionchoices optionIdentifier="RESPONSE" shuffle="false" maxOptions="1">
<choice identifier="A1"><![CDATA[aaaa]]></choice>
<choice identifier="A2"><![CDATA[bbbb]]></choice>
<choice identifier="A3"><![CDATA[cccc]]></choice>
</optionchoices>
</div>
</itemBody>
我嘗試了兩種一套代碼,但不符合預期的結果。
代碼1
<?php
$xml = simplexml_load_file('test.xml', 'SimpleXMLElement', LIBXML_NOCDATA);
echo "<pre>";print_r($xml);echo "</pre>"; exit;
?>
輸出
SimpleXMLElement Object
(
[div] => SimpleXMLElement Object
(
[@attributes] => Array
(
[label] => options
)
[optionchoices] => SimpleXMLElement Object
(
[@attributes] => Array
(
[optionIdentifier] => RESPONSE
[shuffle] => false
[maxOptions] => 1
)
[choice] => Array
(
[0] => aaaa
[1] => bbbb
[2] => cccc
)
)
)
)
在上面的輸出,如果我們再爲您在選擇的節點,我們得到值僅而不是屬性
XML的代碼2
<?php
$xml = simplexml_load_file('test.xml');
echo "<pre>";print_r($xml);echo "</pre>"; exit;
?>
輸出
SimpleXMLElement Object
(
[div] => SimpleXMLElement Object
(
[@attributes] => Array
(
[label] => options
)
[optionchoices] => SimpleXMLElement Object
(
[@attributes] => Array
(
[optionIdentifier] => RESPONSE
[shuffle] => false
[maxOptions] => 1
)
[choice] => Array
(
[0] => SimpleXMLElement Object
(
[@attributes] => Array
(
[identifier] => A1
)
)
[1] => SimpleXMLElement Object
(
[@attributes] => Array
(
[identifier] => A2
)
)
[2] => SimpleXMLElement Object
(
[@attributes] => Array
(
[identifier] => A3
)
)
)
)
)
)
在此輸出中,我們只得到屬性。
現在我想要的是獲取屬性以及XML的值。
請幫忙。
在此先感謝。
用循環做。首先循環第一個xml數組,使用選擇id作爲索引,名稱將作爲第二個索引,然後在相應的索引中循環第二個輸出添加屬性.. – 2014-08-27 08:20:16
'$ xml-> div-> attributes()'爲第一個?根據需要使用循環。 – Debflav 2014-08-27 08:22:03
這裏有幾種用於XML序列化,JsonML,BadgerFish,Rayfish的JSON格式......你想創建什麼樣的目標格式? – ThW 2014-08-27 08:29:35