【问题标题】:Parsing XML with DOMParser works in Chrome, but not in FF使用 DOMParser 解析 XML 在 Chrome 中有效,但在 FF 中无效
【发布时间】:2014-03-03 00:43:04
【问题描述】:

我正在尝试使用 DOMParser 从 XML 中获取节点。下面的代码适用于 Chrome,但不适用于 FF。难道我做错了什么?或者,FF做错了什么?这里有一个小提琴:http://jsfiddle.net/lborgman/D8QHT/2/

var zXml = '<?xml version="1.0"?> <div class="csl-bib-body" style="line-height: 2; padding-left: 2em; text-indent:-2em;"> <div class="csl-entry">The Polyvagal Theory.</div> </div>';
var dp = new DOMParser();
var zDom = dp.parseFromString(zXml, "text/xml");
document.getElementById("output").appendChild(document.createTextNode(zDom.nodeValue));
var divCite = zDom.querySelector("div.csl-entry");
console.log(divCite);
document.getElementById("output2").appendChild(document.createTextNode(divCite.innerHTML));

【问题讨论】:

    标签: javascript xml google-chrome firefox domparser


    【解决方案1】:

    尝试解析为text/htmlquerySelector 不适用于 XML 文档,因为 XML 不理解 CSS 类。

    var zDom = dp.parseFromString(zXml, "text/html");
    

    或者,您可以使用 XML 和 querySelector,但要更明确地使用您的选择器参数:

    var divCite = zDom.querySelector("div[class=csl-entry]");
    

    至于nodeValue,我不确定您希望在document 对象的该属性中看到什么。

    【讨论】:

    • 谢谢杰里米!解析为 text/html 也可以在 FF 中使用。当然,有点混乱。在我看来,Chrome 的方式更好。
    • 实际上我不得不反对:我认为期望 CSS 速记语法能够正确查询 XML 文档有点奇怪。 (这就是我在答案中添加[class=... 选择器的原因。)不过,我们让它发挥作用,这很重要。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    • 2011-02-22
    • 2014-04-17
    • 1970-01-01
    相关资源
    最近更新 更多