可以使用JavaScript中的内置方法来将XML转换为JSON。(本站工具点击这里)以下是一个示例代码,演示了如何实现这一转换:
function xmlToJson(xml) {
// 创建一个空对象
let obj = {};
// 如果传入的是文本节点,则直接返回其文本内容
if (xml.nodeType === 3) {
obj = xml.nodeValue;
}
// 如果节点类型是元素节点
if (xml.nodeType === 1) {
// 如果该元素有子节点
if (xml.hasChildNodes()) {
// 遍历子节点
for (let i = 0; i < xml.childNodes.length; i++) {
const item = xml.childNodes[i];
// 如果子节点是元素节点
if (item.nodeType === 1) {
// 如果该元素已经存在于对象中
if (obj[item.nodeName]) {
// 将其转换为数组
if (!obj[item.nodeName].push) {
obj[item.nodeName] = [obj[item.nodeName]];
}
// 将子节点转换为JSON并添加到数组中
obj[item.nodeName].push(xmlToJson(item));
} else {
// 如果该元素不存在于对象中,直接转换为JSON并添加到对象中
obj[item.nodeName] = xmlToJson(item);
}
}
}
}
// 遍历元素的属性,将属性添加到对象中
if (xml.attributes && xml.attributes.length > 0) {
obj["@attributes"] = {};
for (let j = 0; j < xml.attributes.length; j++) {
const attribute = xml.attributes.item(j);
obj["@attributes"][attribute.nodeName] = attribute.nodeValue;
}
}
}
return obj;
}
// 示例 XML 数据
const xmlData = `<person>
<name>John</name>
<age>30</age>
<address>
<city>New York</city>
<zip>10001</zip>
</address>
</person>`;
// 创建 DOM 对象
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(xmlData, "text/xml");
// 将 XML 转换为 JSON
const jsonData = xmlToJson(xmlDoc);
console.log(jsonData);
这个代码将会输出如下的JSON格式:
{
"person": {
"name": "John",
"age": "30",
"address": {
"city": "New York",
"zip": "10001"
}
}
}
这只是一个基本的转换功能。对于更复杂的XML结构,你可能需要进行更多的处理。