2012-02-05 76 views
2

我想將數組轉換下面將數組到XML或JSON

Array 
(
    [city] => Array 
     (
      [0] => Array 
       (
        [0] => Rd 
        [1] => E 
       ) 

      [1] => B 
      [2] => P 
      [3] => R 
      [4] => S 
      [5] => G 
      [6] => C 
     ) 

    [dis] => 1.4 
) 

成XML格式或JSON。有人可能會幫忙嗎?

+0

可能重複[如何數組轉換爲SimpleXML的(http://stackoverflow.com/questions/1397036/how-to-convert-array-to-simplexml) – nickb 2012-02-05 19:22:45

+1

看看http://stackoverflow.com/questions/1397036/how-to-convert-array-to-simplexml例如 – 2012-02-05 19:23:13

回答

3

這適用於關聯數組。

function array2xml($array, $node_name="root") { 
    $dom = new DOMDocument('1.0', 'UTF-8'); 
    $dom->formatOutput = true; 
    $root = $dom->createElement($node_name); 
    $dom->appendChild($root); 

    $array2xml = function ($node, $array) use ($dom, &$array2xml) { 
     foreach($array as $key => $value){ 
      if (is_array($value)) { 
       $n = $dom->createElement($key); 
       $node->appendChild($n); 
       $array2xml($n, $value); 
      }else{ 
       $attr = $dom->createAttribute($key); 
       $attr->value = $value; 
       $node->appendChild($attr); 
      } 
     } 
    }; 

    $array2xml($root, $array); 

    return $dom->saveXML(); 
} 
4

JSON,使用json_encode功能:

<?php echo json_encode($array); ?> 

XML,看到this question

+0

json_encode轉換數組inton json格式,但關鍵沒有被刪除的子數組..你能否提出一個函數來顯示json中的所有元素請 – 2012-02-06 18:41:29

2

您使用哪種編程語言?

如果您使用的是PHP,你可以使用以下方法來轉換成JSON:

$json = json_encode($your_array); 

而對於XML,你可以檢查以下答案:How to convert array to SimpleXML

希望它有幫助。

+1

抱歉,但它沒有幫助..例子不支持數字索引可以給我更多請在這些陣列上反饋 – 2012-02-06 18:40:15

0

注:號碼XML元素名稱是不是一個好主意,所以$ your_array不應該有按鍵數字。

試試這個:下面

 
$your_array = array(
     'city' => array 
      (
      '0' => array('0' => 'Rd', '1' => 'E'), 
      '1' => 'B', 
      '2' => 'P', 
      '3' => 'R', 
      '4' => 'S', 
      '5' => 'G', 
      '6' => 'C' 
      ), 
     'dis' => '1.4' 
     ); 

函數調用自身(遞歸),所以應該對任何深度的陣列工作。

功能使用三元運算符:

(condition) ? if true action : if false action

...檢查,如果所謂的價值是數組。

如果它是數組,它會調用它自己(遞歸)來深入挖掘,如果值不是數組,它將被附加到XML對象,使用數組鍵值爲元素名稱和數組值賦值。

 
function array_to_xml(array $your_array, SimpleXMLElement $xml){ 
    foreach ($arr as $k => $v){ 
     is_array($v) ? array_to_xml($v, $xml->addChild($k)) : $xml->addChild($k, $v); 
    } 
    return $xml; 
} 

$your_xml = $this->array_to_xml($your_array, new SimpleXMLElement(''))->asXML(); 

現在,你的陣列是一個XML和封閉在$ your_xml變量,所以你可以用它任何你想要的。

$ your_xml輸出(例如,如果你「迴響」它)是這樣的:

 
<root> 
    <city> 
     <0> 
      <0>Rd</0> 
      <1>E</1> 
     </0> 
     <1>B</1> 
     <2>P</2> 
     <3>R</3> 
     <4>S</4> 
     <5>G</5> 
     <6>C</6> 
    </city> 
    <dis>1.4</dis> 
</root>