我正在使用jQuery来解析一些XML,如下所示:
function enumOptions(xml) {
$(xml).find("animal").each(function(){
alert($(this).text());
});
}
enumOptions("
这非常有效.但是,如果我尝试寻找称为“选项”的节点,那么它不起作用:
function enumOptions(xml) {
$(xml).find("option").each(function(){
alert($(this).text());
});
}
enumOptions("
没有任何错误,只是没有得到任何警报,好像找不到任何东西.它只适用于名为选项的节点,其他一切我测试的工作正常!
我正在使用当前版本的jQuery – 1.4.2.
有人有什么想法?
TIA.
BG
最佳答案
更新
原文链接:https://www.f2er.com/jquery/428865.htmljQuery现在内置了这种方法.您可以使用
$.parseXML("..")
从字符串构造XML DOM.
jQuery依赖于使用innerHTML的HTML DOM来解析文档,当标记名称与HTML中的标记名称冲突时,该文档可能具有不可靠的结果.
相反,您可以使用正确的XML解析器来首先解析文档,然后使用jQuery进行查询.下面的方法将以跨浏览器的方式解析有效的XML文档:
// http://www.w3schools.com/dom/dom_parser.asp
function parseXML(text) {
var doc;
if(window.DOMParser) {
var parser = new DOMParser();
doc = parser.parseFromString(text,"text/xml");
}
else if(window.ActiveXObject) {
doc = new ActiveXObject("Microsoft.XMLDOM");
doc.async = "false";
doc.loadXML(text);
}
else {
throw new Error("Cannot parse XML");
}
return doc;
}
构建XML DOM后,jQuery可以正常使用 – http://jsfiddle.net/Rz7Uv/
var text = "