【问题标题】:javascript firefox(17.01) parser.parseFromString with a string too large, error NS_ERROR_XPC_BAD_CONVERT_JSjavascript firefox(17.01) parser.parseFromString 字符串太大,错误 NS_ERROR_XPC_BAD_CONVERT_JS
【发布时间】:2012-11-27 03:19:50
【问题描述】:

利用 firefox (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

非常感谢

【问题讨论】:

    标签: javascript xml firefox xml-parsing


    【解决方案1】:

    使用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")
      }
    

    参考文献

    【讨论】:

      猜你喜欢
      • 2015-07-10
      • 2012-11-05
      • 2015-05-11
      • 2012-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-17
      • 1970-01-01
      相关资源
      最近更新 更多