HOWTO · JavaScript

在 JavaScript 中將 JSON 轉換為 XML

本文有助於使用 JavaScript 將 JSON 轉換為 XML。

本頁內容

本文有助於使用 JavaScript 將 JSON 轉換為 XML。

使用 JavaScript 將 JSON 轉換為 XML

要從 Web 伺服器接收資料,你可以使用 JSON 或 XML。

下面是 JSON 和 XML 的樣子。

JSON:

{
   "students": [
      {
         "firstName": "Jack",
         "lastName": "Duk"
      },
      {
         "firstName": "David",
         "lastName": "Smith"
      },
      {
         "firstName": "Peter",
         "lastName": "Parker"
      }
   ]
}

XML:

<?xml version="1.0" encoding="UTF-8" ?>
<root>
  <students>
    <firstName>Jack</firstName>
    <lastName>Duk</lastName>
  </students>
  <students>
    <firstName>David</firstName>
    <lastName>Smith</lastName>
  </students>
  <students>
    <firstName>Peter</firstName>
    <lastName>Parker</lastName>
  </students>
</root>

讓我們從這個用於將 JSON 轉換為 XML 的 JavaScript 函式開始。

var InputJSON =
    '{College:{entry: [{ Student : \'shiv\', Roll_No: 12},{ Student : \'yadav\',Roll_No: 56}]}}';
var output = eval('OBJtoXML(' + InputJSON + ');')

function OBJtoXML(obj) {
  var xml = '';
  for (var prop in obj) {
    xml += obj[prop] instanceof Array ? '' : '<' + prop + '>';
    if (obj[prop] instanceof Array) {
      for (var array in obj[prop]) {
        xml += '<' + prop + '>';
        xml += OBJtoXML(new Object(obj[prop][array]));
        xml += '</' + prop + '>';
      }
    } else if (typeof obj[prop] == 'object') {
      xml += OBJtoXML(new Object(obj[prop]));
    } else {
      xml += obj[prop];
    }
    xml += obj[prop] instanceof Array ? '' : '</' + prop + '>';
  }
  var xml = xml.replace(/<\/?[0-9]{1,}>/g, '');
  return xml
}

console.log(output);

在此處檢視演示

XML 中的陣列很奇怪,因為標記重複會識別它們,而不是明確拼寫為 JSON 陣列。最好使用 Array 鍵作為要重複的標籤。

輸出:

<?xml version="1.0" encoding="UTF-8"?>
<College>
   <entry>
      <Student>shiv</Student>
      <Roll_No>12</Roll_No>
   </entry>
   <entry>
      <Student>yadav</Student>
      <Roll_No>56</Roll_No>
   </entry>
</College>

你可以在輸出中看到標籤重複。