使用JS将XML转换为JSON

可以使用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结构,你可能需要进行更多的处理。