我正在做一些测试,但是当我使用或不使用normalize()方法时,我看不出有什么区别。 但ExampleDepot网站上的例子使用它。 那么,它是为了什么? (这个文档对我来说也不是很清楚)Java Node标准化方法做什么?
15
A
回答
21
你可以编程的方式构建一个具有与实际XML结构不对应的多余结构的DOM树 - 特别是像多个相邻节点类型的节点,或者空节点键入文本。 normalize()
方法删除这些,即它组合相邻的文本节点并删除空的节点。
当其他代码期望DOM树总是看起来像从实际的XML文档构建的东西时,这会很有用。
这基本上意味着,下面的XML元素
<foo>hello
wor
ld</foo>
可以像这样在一个非规范化节点来表示:
Element foo
Text node: ""
Text node: "Hello "
Text node: "wor"
Text node: "ld"
当标准化,该节点将看起来像这样
Element foo
Text node: "Hello world"
3
它清理相邻文本节点和空文本节点的代码
0
标准化XML文档的根元素。这确保了根节点下的所有Text节点都被放入“正常”形式,这意味着文档中既没有相邻的Text节点也没有空的Text节点。
2
有很多可能的DOM树对应于相同的XML结构,每个XML结构至少有一个对应的DOM树。所以从DOM到XML的转换是surjective。 所以可能发生:
dom_tree_1 != dom_tree_2
# but:
dom_tree_1.save_DOM_as_XML() == dom_tree_2.save_DOM_as_XML()
而且也没有办法保证:
dom_tree == dom_tree.save_DOM_as_XML().load_DOM_from_XML()
但是,我们想拥有它bijective。这意味着每个XML结构都对应一个特定的DOM树。
因此,您可以定义所有可能的DOM树的子集,这些树对于所有可能的XML结构集都是双射的。
# 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表示中完美重构。没有信息丢失。
相关问题
- 1. auto_increment的标准化方法
- 2. registerNatives()方法做了什么?
- 3. Container.validate()方法做什么?
- 4. innobackupex对标准做了什么?
- 5. 如何做标准化?
- 6. HOG:在对比度标准化步骤中做了什么?
- 7. super()方法做什么?
- 8. jQuery .filter()方法做什么?
- 9. Android:“setTextFilterEnabled”方法做什么?
- 10. getiterator()方法做什么?
- 11. 在SQL中命名中间表的标准做法是什么?
- 12. 废弃WCF服务调用的标准做法是什么?
- 13. 抛出JavaScript异常的标准做法是什么?
- 14. (node/enable-util-print!)做些什么?
- 15. 什么是C#“格式化”标准?
- 16. 使用node-java初始化我的java方法的问题
- 17. Subversion的标准做法
- 18. Windsor配置标准做法
- 19. 什么是java中的标准对象?
- 20. 标准Java的ACRA是什么?
- 21. 标准URL规范化 - Java
- 22. 初始化基于COM库的“标准”方式是什么
- 23. 在F#/ Scala中优化相互递归的标准方法是什么?
- 24. pthreads的官方标准是什么?
- 25. 变通办法的标准做法是在Java中
- 26. SIFT方向标准化
- 27. URL标准化和标准化的标准工具?
- 28. Ctrl +箭头:什么算法或标准?
- 29. 做这种初始化的常规方法是什么?
- 30. 通过processStrategy或idAttribute方法判断模式是否被标准化或非标准化的方法