如何从字符串中解析 XML dom?
How to parse a XML dom from a string?
可以从头开始构建 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;
可以从头开始构建 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;