PHP中的JSON與XML格式怎么轉(zhuǎn)換

今天小編給大家分享一下PHP中的JSON與XML格式怎么轉(zhuǎn)換的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

公司主營業(yè)務(wù):做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)建站是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)建站推出十堰鄖陽免費(fèi)做網(wǎng)站回饋大家。

一、JSON轉(zhuǎn)XML

PHP提供了可用于將JSON數(shù)據(jù)轉(zhuǎn)換成XML格式的函數(shù)json_decode()。其語法如下:

mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )

其中,$json表示要轉(zhuǎn)換的JSON字符串,$assoc表示是否將JSON對(duì)象轉(zhuǎn)換成關(guān)聯(lián)數(shù)組(默認(rèn)為false),$depth表示最大遞歸深度(默認(rèn)為512),$options表示轉(zhuǎn)換選項(xiàng)(默認(rèn)為0)。

下面是一個(gè)將JSON數(shù)組轉(zhuǎn)換成XML的例子:

<?php
// JSON數(shù)據(jù)
$json_data = '{
    "students": [
        {
            "name": "David",
            "age": 20,
            "score": {
                "English": 90,
                "Math": 85,
                "Chinese": 95
            }
        },
        {
            "name": "Tom",
            "age": 22,
            "score": {
                "English": 80,
                "Math": 75,
                "Chinese": 85
            }
        }
    ]
}';

// 將JSON數(shù)據(jù)轉(zhuǎn)換成PHP數(shù)組
$php_data = json_decode($json_data, true);

// 將PHP數(shù)組轉(zhuǎn)換成XML格式
$xml_data = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><data></data>');
array_to_xml($php_data, $xml_data);

// 輸出XML格式數(shù)據(jù)
header('Content-type: text/xml');
echo $xml_data->asXML();

// 將數(shù)組轉(zhuǎn)換成XML格式的函數(shù)
function array_to_xml($arr, &$xml) {
    foreach ($arr as $key => $value) {
        if (is_array($value)) {
            if (!is_numeric($key)) {
                $subnode = $xml->addChild("$key");
                array_to_xml($value, $subnode);
            } else {
                array_to_xml($value, $xml);
            }
        } else {
            $xml->addChild("$key", htmlspecialchars("$value"));
        }
    }
}
?>

上述代碼首先將JSON字符串轉(zhuǎn)換成PHP數(shù)組,然后再使用遞歸函數(shù)將PHP數(shù)組轉(zhuǎn)換成XML格式。

輸出XML格式數(shù)據(jù)如下:

<?xml version="1.0" encoding="UTF-8"?>
<data>
  <students>
    <0>
      <name>David</name>
      <age>20</age>
      <score>
        <English>90</English>
        <Math>85</Math>
        <Chinese>95</Chinese>
      </score>
    </0>
    <1>
      <name>Tom</name>
      <age>22</age>
      <score>
        <English>80</English>
        <Math>75</Math>
        <Chinese>85</Chinese>
      </score>
    </1>
  </students>
</data>

二、XML轉(zhuǎn)JSON

要將XML格式轉(zhuǎn)換成JSON格式,則需要先將XML轉(zhuǎn)換成PHP數(shù)組,再使用json_encode()函數(shù)將PHP數(shù)組轉(zhuǎn)換成JSON字符串。下面是一個(gè)將XML轉(zhuǎn)換成JSON的例子:

<?php
// XML數(shù)據(jù)
$xml_data = '<?xml version="1.0" encoding="UTF-8"?>
<data>
  <students>
    <0>
      <name>David</name>
      <age>20</age>
      <score>
        <English>90</English>
        <Math>85</Math>
        <Chinese>95</Chinese>
      </score>
    </0>
    <1>
      <name>Tom</name>
      <age>22</age>
      <score>
        <English>80</English>
        <Math>75</Math>
        <Chinese>85</Chinese>
      </score>
    </1>
  </students>
</data>';

// 將XML數(shù)據(jù)轉(zhuǎn)換成PHP數(shù)組
$php_data = xml_to_array(simplexml_load_string($xml_data));

// 將PHP數(shù)組轉(zhuǎn)換成JSON字符串
$json_data = json_encode($php_data);

// 輸出JSON格式數(shù)據(jù)
header('Content-type: text/json');
echo $json_data;

// 將XML數(shù)據(jù)轉(zhuǎn)換成PHP數(shù)組的函數(shù)
function xml_to_array($xml) {
    $arr = array();
    foreach ($xml->children() as $element) {
        if (count($element->children()) == 0) {
            $arr[$element->getName()] = strval($element);
        } else {
            $arr[$element->getName()][] = xml_to_array($element);
        }
    }
    return $arr;
}
?>

上述代碼首先將XML字符串通過simplexml_load_string()函數(shù)轉(zhuǎn)換成SimpleXMLElement對(duì)象,再通過遞歸函數(shù)將SimpleXMLElement對(duì)象轉(zhuǎn)換成PHP數(shù)組。最后使用json_encode()函數(shù)將PHP數(shù)組轉(zhuǎn)換成JSON字符串。

輸出JSON格式數(shù)據(jù)如下:

{
  "students": [
    {
      "name": "David",
      "age": "20",
      "score": {
        "English": "90",
        "Math": "85",
        "Chinese": "95"
      }
    },
    {
      "name": "Tom",
      "age": "22",
      "score": {
        "English": "80",
        "Math": "75",
        "Chinese": "85"
      }
    }
  ]
}

以上就是“PHP中的JSON與XML格式怎么轉(zhuǎn)換”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)站欄目:PHP中的JSON與XML格式怎么轉(zhuǎn)換
標(biāo)題網(wǎng)址:http://muchs.cn/article46/gdsdeg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站網(wǎng)站制作虛擬主機(jī)、、網(wǎng)站營銷、定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化