2014-08-27 71 views
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的值。

請幫忙。

在此先感謝。

+0

用循環做。首先循環第一個xml數組,使用選擇id作爲索引,名稱將作爲第二個索引,然後在相應的索引中循環第二個輸出添加屬性.. – 2014-08-27 08:20:16

+0

'$ xml-> div-> attributes()'爲第一個?根據需要使用循環。 – Debflav 2014-08-27 08:22:03

+0

這裏有幾種用於XML序列化,JsonML,BadgerFish,Rayfish的JSON格式......你想創建什麼樣的目標格式? – ThW 2014-08-27 08:29:35

回答

相關問題