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>

你可以在输出中看到标签重复。