如何从字符串解析 XML dom

How to parse a XML dom from a string?

本文关键字:XML dom 字符串      更新时间:2023-09-26
可以

从头开始构建一个XML DOM:

var data = document.implementation.createDocument("", "", null);
data.appendChild(data.createElement("data"));

但是我找不到从字符串(不是URL)构建XML DOM的方法:

var data = document.implementation.createDocument("", "", null);
data.parse_document("<data/>");

我是否必须从头开始编写parse_document或者它是否以某种方式可用?

从您问题中的代码来看,您似乎是在浏览器上执行此操作。

如果是这样,您可以使用DOMParser(如果可用),回退(在 IE 上)到活动的 X 对象。

function parseXML(str) {
    var xmlDoc, parser;
    if (window.DOMParser) {
        parser = new DOMParser();
        xmlDoc = parser.parseFromString(str, "text/xml");
    } else {
        xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async = "false";
        xmlDoc.loadXML(str);
    }
    return xmlDoc;
}

请注意,parseXML将在无效 XML 上引发异常。

除了T.J Crowder的回答之外,The Definitive Guide还包括第三个选项:

var url = 'data:text/xml;charset=utf-8,' + encodeURIComponent(text);
var request = new XMLHttpRequest();
request.open('GET', url, false);
if (request.overrideMimeType) {
    request.overrideMimeType("text/xml");
}
request.send(null);
return request.responseXML;