Java 什么是xml规范化?

Java 什么是xml规范化?,java,xml,terminology,normalization,Java,Xml,Terminology,Normalization,可能重复: 什么是xml规范化。我在javadoc中发现了以下内容,但我无法理解它。有人能帮忙吗 public void normalize() 将此节点下子树全深度的所有文本节点(包括属性节点)放入“正常”形式,其中只有结构(例如元素、注释、处理指令、CDATA节和实体引用)分隔文本节点,即既没有相邻文本节点,也没有空文本节点。这可用于确保文档的DOM视图与保存和重新加载时相同,并且在使用依赖于特定文档树结构的操作(例如XPointer[XPointer]查找)时非常有用。如果附加到Nod

可能重复:

什么是xml规范化。我在javadoc中发现了以下内容,但我无法理解它。有人能帮忙吗

public void normalize()
将此节点下子树全深度的所有文本节点(包括属性节点)放入“正常”形式,其中只有结构(例如元素、注释、处理指令、CDATA节和实体引用)分隔文本节点,即既没有相邻文本节点,也没有空文本节点。这可用于确保文档的DOM视图与保存和重新加载时相同,并且在使用依赖于特定文档树结构的操作(例如XPointer[XPointer]查找)时非常有用。如果附加到Node.ownerDocument的DOMConfiguration对象的参数“normalize characters”为true,则此方法还将完全规范文本节点的字符。 注意:在文档包含CDATA节的情况下,仅使用规范化操作可能不够,因为XPointer不区分文本节点和CDATA节节点。 自:
DOM级别3

API文档非常详细地解释了它,但不确定要解释什么。基本上,该方法通过组合相邻的文本节点,消除空文本节点,并可选地对Unicode复合字符进行规范化,从而将从
节点开始的DOM子树转换为“标准格式”。

解析器通常会返回“意外”文本节点,其中文本被拆分为多个节点,或者,不太常见的是空文本节点。这是为了获得最佳性能而对其进行优化的副作用。当存在可忽略的空白、缓冲区边界或解析器方便使用的其他任何地方时,可能会发生这种情况


normalize()
将消除所有这些意外,合并相邻的文本节点并删除空节点。

提供指向该javadoc的链接会很有帮助:)您能给我们举个例子吗?ie是一个xml文档,当我们不使用normalize()解析它时,它肯定会带来“惊喜”?一旦我们可以比较normalize和normalize,我们就可以看到它们之间的区别,一切都会更加清晰。@AppleGrinder-我不能可靠地指出任何特定的示例-这取决于您使用的解析器。但是,我认为可以肯定地说,如果一个元素的文本是,比如说,一个兆字节长,那么由于在缓冲区边界处进行拆分,您将得到多个文本节点。最不可预测的节点分割是在缓冲区边界上进行的,因为这种情况很少发生,而且似乎是“随机”发生的,所以测试可能会通过。我知道我见过ApacheXerces(因此可能是默认的Java解析器)这样做,我想OP要求的是一个简单的英语示例,也许用最少的术语。好吧,这样想-你会如何向一个外行解释?请参阅我对Ed Staub回答的评论。