我正在做一些測試,但是當我使用或不使用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. node --nocrankshaft做什麼?
- 2. `node --harmony`做什麼?
- 3. 標準化CSS的最佳做法是什麼?
- 4. auto_increment的標準化方法
- 5. 在Java方法中做什麼?
- 6. registerNatives()方法做了什麼?
- 7. 爲什麼Java標準庫不實現toString方法?
- 8. Container.validate()方法做什麼?
- 9. innobackupex對標準做了什麼?
- 10. 標準tokenfilter在Elasticsearch中做了什麼?
- 11. HOG:在對比度標準化步驟中做了什麼?
- 12. 做一個標準化
- 13. 如何做標準化?
- 14. 什麼Socket.getInputStream()。read()方法會在java中做什麼?
- 15. 在Python中做這種排序的標準方式是什麼?
- 16. Android:「setTextFilterEnabled」方法做什麼?
- 17. getiterator()方法做什麼?
- 18. super()方法做什麼?
- 19. Activity.finish()方法在做什麼?
- 20. 什麼dnn.js setCookie方法做
- 21. 「WebViewClient.onReceivedLoginRequest」方法做什麼
- 22. jQuery .filter()方法做什麼?
- 23. 這種方法做什麼?
- 24. 拋出JavaScript異常的標準做法是什麼?
- 25. 廢棄WCF服務調用的標準做法是什麼?
- 26. 無法獲得標準偏差,我做錯了什麼?
- 27. 在SQL中命名中間表的標準做法是什麼?
- 28. 做什麼:_ *在從Scala調用Java可變參數方法時做什麼?
- 29. (node/enable-util-print!)做些什麼?
- 30. connection.connect()在node-mysql中做什麼?