首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java Node normalize方法做什么?

Java Node normalize方法做什么?
EN

Stack Overflow用户
提问于 2010-03-17 04:40:59
回答 4查看 22K关注 0票数 23

我正在做一些测试,但当我使用或不使用normalize()方法时,我看不出有什么不同。但ExampleDepot网站上的示例使用了它。那么,它是用来做什么的?(文档对我来说也不清楚)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-03-17 04:48:06

您可以通过编程方式构建一个DOM树,该树具有与实际XML结构不对应的外部结构-具体地说,就是像text类型的多个节点相邻或text类型的空节点这样的内容。normalize()方法删除了这些节点,即它合并相邻的文本节点并删除空节点。

当您有其他代码希望DOM树看起来总是像从实际XML文档构建的内容时,这会很有用。

这基本上意味着下面的XML元素

代码语言:javascript
复制
<foo>hello 
wor
ld</foo>

可以像这样在反规范化节点中表示:

代码语言:javascript
复制
Element foo
    Text node: ""
    Text node: "Hello "
    Text node: "wor"
    Text node: "ld"

规范化后,该节点将如下所示

代码语言:javascript
复制
Element foo
    Text node: "Hello world"
票数 28
EN

Stack Overflow用户

发布于 2010-03-17 05:07:40

它清除相邻文本节点和空文本节点中的代码

票数 4
EN

Stack Overflow用户

发布于 2015-09-11 15:39:00

有许多可能的DOM树对应于相同的XML结构,并且每个XML结构至少有一个对应的DOM树。所以从DOM到XML的转换是surjective。因此,可能会发生以下情况:

代码语言:javascript
复制
dom_tree_1 != dom_tree_2
# but:
dom_tree_1.save_DOM_as_XML() == dom_tree_2.save_DOM_as_XML()

而且也没有办法确保:

代码语言:javascript
复制
dom_tree == dom_tree.save_DOM_as_XML().load_DOM_from_XML()

但我们想让它成为bijective。这意味着每个XML结构对应一个特定的DOM树。

因此,您可以定义所有可能的DOM树的子集,该子集与所有可能的XML结构集是双向映射的。

代码语言:javascript
复制
# still:
dom_tree.save_DOM_as_XML() == dom_tree.normalized().save_DOM_as_XML()
# but with:
dom_tree_n = dom_tree.normalize() 
# we now even have:
dom_tree_n == dom_tree_n.save_DOM_as_XML().load_DOM_from_XML().normalize()

因此,规范化的DOM树可以从它们的XML表示中完美地重构。没有信息丢失。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2457955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档