Javascript parseFromString(text,“text/html”仅解释前21500字节。这是虫子吗?

Javascript parseFromString(text,“text/html”仅解释前21500字节。这是虫子吗?,javascript,firefox,html-parsing,promise,domparser,Javascript,Firefox,Html Parsing,Promise,Domparser,我已经赢了7,64位,Firefox32.0.1,Noscript运行 下面的代码仅返回带有aXML.getElementsByTagName(“节点”)的199个节点,而解析文本中有300个节点,这不是格式良好的xml var atext = ''; for (var i=0;i<300;i++) { atext += ' <node id="'+i+'" lat="42.5168939" lon="1.553855" version="2" changeset="217

我已经赢了7,64位,Firefox32.0.1,Noscript运行

下面的代码仅返回带有aXML.getElementsByTagName(“节点”)的199个节点,而解析文本中有300个节点,这不是格式良好的xml

var atext = '';
for (var i=0;i<300;i++) {
    atext += '  <node id="'+i+'" lat="42.5168939" lon="1.553855" version="2" changeset="21730124"/>'+"\n\r";
}
parser = new DOMParser();
aXML= parser.parseFromString(atext , "text/html");
console.log(" nodes: " + aXML.getElementsByTagName("node").length
        +"\n\r atext.length:" + atext.length);
console.log(aXML.getElementsByTagName('node'));

这有关系吗?

问题是您试图将XML解析为HTML。这两种语言在有效语法方面有很大不同。而不是使用:

aXML= parser.parseFromString(atext , "text/html");
您需要改为使用:

aXML= parser.parseFromString(atext , "text/xml");

另外,请确保XML有效,否则它将无法解析。在您的示例中,它不是,但我假设这只是一个测试用例。

您能将它简化为一个更小的文件来再现问题(小到可以将其包含在问题中)吗?没有人会阅读25k的xml。继续删除文件的位,直到有一个非常小的文件显示problem@FrederickCheung:好了,我用javascript编写了一个示例代码。什么浏览器用来测试这个?@Anonymous:我赢了7,64位,Firefox 32.0.1,Noscript正在运行。:)不,它在实际用例中不是格式良好的XML。为了解析它,它需要是有效的XML或HTML。提示:使用
text/xml
解析web组件时,将忽略生命周期事件,例如
connectedCallback
。这将影响组件的内部工作。在这种情况下使用
text/html
aXML= parser.parseFromString(atext , "text/html");
aXML= parser.parseFromString(atext , "text/xml");