【问题标题】:Is there a 4096 character limit for JavaScript XML text nodes?JavaScript XML 文本节点是否有 4096 个字符的限制?
【发布时间】:2026-01-12 07:35:02
【问题描述】:

为什么我总是只获得有效 XML 文本节点的前 4096 个字符? (使用 JavaScript ......)文本节点是否受限?

【问题讨论】:

    标签: javascript xml textnode


    【解决方案1】:

    是的。一些浏览器限制为 4096,并将较长的文本拆分为父元素的多个文本节点子节点。如果你查看 Apache CXF 的源代码,你会发现一些实用的 Java 脚本来处理这个问题,如果没有其他地方的话。

    // Firefox splits large text regions into multiple Text objects (4096 chars in
    // each). Glue it back together.
    function getNodeText(node) {
        var r = "";
        for (var x = 0;x < node.childNodes.length; x++) {
            r = r + node.childNodes[x].nodeValue;
        }
        return r;
    }
    

    另见:

    https://github.com/apache/cxf/blob/cxf-2.1.9/rt/javascript/src/main/resources/org/apache/cxf/javascript/cxf-utils.js

    在这附近有更多的好东西。

    【讨论】:

    • 您有浏览器列表吗?除了浏览器检查之外,还有其他方法可以检查此约束吗?
    • 没有。任何任何浏览器都可以随时更改。我们唯一安全的做法是运行无关紧要的代码。
    • 哦,好吧...那 \p IE (8) 接受所有内容(长度=25858)但 Firefox 不接受... 但是 IE 不接受 w3School 的新 loadXMLDoc xhttp=new ActiveXObject("Microsoft.XMLHTTP") 它与 { xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); } :( 从不认为这可能是浏览器问题...您有更具体的内容(文件名?)要在 Apache 解决方案中寻找吗?感谢您的提示...
    • 哦好吧...那 [br] IE (8) 接受所有内容 (length=25858) [br] 但 Firefox 不... [p] 但 IE 不接受接受 w3School 的新 loadXMLDoc xhttp=new ActiveXObject("Microsoft.XMLHTTP"),[br] 它与 { xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); } [br] :( [br] 从不认为这可能是浏览器问题... [br] 你有更具体的东西(文件名?)要在 Apache 解决方案中寻找吗?[p] 感谢您的提示.. .
    • 太棒了!您的解决方案工作正常。谢谢。 XMLDOM/XMLHTTP 怎么样,我们应该坚持 XMLDOM 吗?
    【解决方案2】:

    顺便说一句,您可以使用normalize方法将所有连续的TextNode合并为一个,而不是循环它们来获取文本。

    【讨论】:

    • 我从来不知道有 Normalize 方法。非常感谢!