在JavaScript中,可以使用DOMParser和XMLSerializer对象来实现XML和字符串之间的相互转换。
以下是将XML字符串转换为JavaScript对象的示例代码:
function xmlToJson(xml) { // 创建一个空对象来存储结果 var obj = {}; if (xml.nodeType === 1) { // element // 处理元素的属性 if (xml.attributes.length > 0) { obj["@attributes"] = {}; for (var j = 0; j < xml.attributes.length; j++) { var attribute = xml.attributes.item(j); obj["@attributes"][attribute.nodeName] = attribute.nodeValue; } } } else if (xml.nodeType === 3) { // text obj = xml.nodeValue; } // 处理子节点 if (xml.hasChildNodes()) { for(var i = 0; i < xml.childNodes.length; i++) { var item = xml.childNodes.item(i); var nodeName = item.nodeName; if (typeof(obj[nodeName]) === "undefined") { obj[nodeName] = xmlToJson(item); } else { if (typeof(obj[nodeName].push) === "undefined") { var old = obj[nodeName]; obj[nodeName] = []; obj[nodeName].push(old); } obj[nodeName].push(xmlToJson(item)); } } } return obj; } // 使用DOMParser解析XML字符串 var parser = new DOMParser(); var xmlString = '<root><element key="value">Text</element></root>'; var xmlDoc = parser.parseFromString(xmlString, "text/xml"); // 将XML转换为JSON对象 var jsonObj = xmlToJson(xmlDoc.documentElement); console.log(jsonObj);
以下是将JavaScript对象转换为XML字符串的示例代码:
function jsonToXml(json) { var xml = ''; for (var prop in json) { if (json.hasOwnProperty(prop)) { if (Array.isArray(json[prop])) { for (var arrayIndex = 0; arrayIndex < json[prop].length; arrayIndex++) { xml += jsonToXml(new Object({[prop]: json[prop][arrayIndex]})); } } else if (typeof json[prop] === "object") { xml += "<" + prop + ">"; xml += jsonToXml(json[prop]); xml += "</" + prop + ">"; } else { xml += "<" + prop + ">" + json[prop] + "</" + prop + ">"; } } } return xml; } // 创建一个简单的JSON对象 var jsonObj = { root: { element: { "@attributes": { key: "value" }, "#text": "Text" } } }; // 将JSON对象转换为XML字符串 var xmlString = jsonToXml(jsonObj); console.log(xmlString);
这些函数可以帮助你在JavaScript中实现XML和字符串之间的相互转换。