在JavaScript中,将XML转换成JSON可以使用多种方法。以下是一些常见的方法和示例代码:
function xmlToJson(xml) {
// 创建返回的对象
let obj = {};
if (xml.nodeType === 1) { // 元素节点
// 处理属性
if (xml.attributes.length > 0) {
obj["@attributes"] = {};
for (let j = 0; j < xml.attributes.length; j++) {
let attribute = xml.attributes.item(j);
obj["@attributes"][attribute.nodeName] = attribute.nodeValue;
}
}
} else if (xml.nodeType === 3) { // 文本节点
obj = xml.nodeValue.trim();
}
// 处理子节点
if (xml.hasChildNodes()) {
for (let i = 0; i < xml.childNodes.length; i++) {
let item = xml.childNodes.item(i);
let nodeName = item.nodeName;
if (typeof obj[nodeName] === "undefined") {
obj[nodeName] = xmlToJson(item);
} else {
if (typeof obj[nodeName].push === "undefined") {
let old = obj[nodeName];
obj[nodeName] = [];
obj[nodeName].push(old);
}
obj[nodeName].push(xmlToJson(item));
}
}
}
return obj;
}
// 使用示例
let xmlString = "<root><name>John</name><age>30</age><cars><car>Toyota</car><car>Honda</car></cars></root>";
let parser = new DOMParser();
let xml = parser.parseFromString(xmlString, "application/xml");
let json = xmlToJson(xml);
console.log(JSON.stringify(json, null, 2));
xml2js
,可以简化XML到JSON的转换过程。const xml2js = require('xml2js');
let xmlString = "<root><name>John</name><age>30</age><cars><car>Toyota</car><car>Honda</car></cars></root>";
xml2js.parseString(xmlString, {explicitArray: false}, (err, result) => {
if (err) {
console.error(err);
return;
}
console.log(JSON.stringify(result, null, 2));
});
trim()
方法去除空白字符。通过以上方法和示例代码,你可以将XML转换为JSON,并根据具体需求选择合适的方法和工具。
领取专属 10元无门槛券
手把手带您无忧上云