简体   繁体   English

如何从字符串解析XML dom?

[英]How to parse a XML dom from a string?

It is possible to build a XML DOM from scratch: 可以从头开始构建XML DOM:

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

But I can not find a method which builds an XML DOM from a string (not URL): 但是我找不到从字符串(不是URL)构建XML DOM的方法:

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

Do I have to write the parse_document from scratch or is it available somehow? 我必须从头开始编写parse_document还是可以使用它?

From the code in your question, it looks like you're doing this on a browser. 从问题代码中,您似乎正在浏览器中执行此操作。

If so, you can use DOMParser if it's available, falling back (on IE) to an active X object. 如果是这样,则可以使用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;
}

Note that parseXML will throw an exception on invalid XML. 请注意, parseXML将在无效的XML上引发异常。

In addition to TJ Crowder's answer, The Definitive Guide includes a third option: 除了TJ Crowder的答案, 权威指南还包括第三个选项:

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;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM