javascript firefox(17.01) parser.parseFromString 的字符串太大,错误NS



利用火狐(17.01),我正在从上传的.csv文件中生成xml代码。这段代码之后将转换为 xhtml,但在此之前,我需要创建有效的 xml 文件。

我的整个代码是

var parser = new DOMParser();
var xml_doc = parser.parseFromString(xml_code,'text/xml');
var xslhttp = new XMLHttpRequest();
xslhttp.open("GET",xsl_code,false);
xslhttp.send();
var xsl_doc = xslhttp.responseXML;
var xsltProcessor = new XSLTProcessor();
xsltProcessor.importStylesheet(xsl_doc);
var xhtml_code = xsltProcessor.transformToFragment(xml_doc,document);

它正常工作,除非我处理大文件。特别是,当xsl_code大到 112.039.355 (xml_code.length) 时,脚本会失败。

错误消息是

NS_ERROR_XPC_BAD_CONVERT_JS: Could not convert JavaScript argument arg 0 [nsIDOMParser.parseFromString]

对此有什么解释吗?火狐有什么限制吗?我知道如果我从文件中删除内容,最终将正确生成xml_doc

非常感谢

使用childNodes测试来查看文档是否超过 Firefox 设置的 4096 个字符限制。如果是这样,请使用循环连接子节点:

var nodes = xml_code.childNodes;
var xml_string = '';
var xml_doc;
if (nodes.length > 1)
  {
  for (var i = 0; i < nodes.length; i++)
    {  
    xml_string += nodes[i].nodeValue;
    }      
  }
else
  {
  xml_string = xml_code;
  }
with (new DOMParser() )
  {
  xml_doc = parseFromString(xml_string, "application/xml")
  }

引用

  • JavaScript XML 文本节点是否有 4096 个字符的限制?

  • DOMParser Limits

  • Mozilla 的 4096 个字符文本节点限制

  • Firefox 4K XML 节点限制

最新更新