W tym samouczku widziałem poniższy wiersz kodu analizatora składni DOM .
doc.getDocumentElement().normalize();
Dlaczego przeprowadzamy tę normalizację?
Czytałem dokumenty, ale nie mogłem zrozumieć słowa.
Umieszcza wszystkie węzły tekstowe na pełnej głębokości poddrzewa pod tym węzłem
Okej, więc czy ktoś może mi pokazać (najlepiej ze zdjęciem), jak wygląda to drzewo?
Czy ktoś może mi wyjaśnić, dlaczego potrzebna jest normalizacja?
Co się stanie, jeśli się nie znormalizujemy?
java
xml
dom
computer-science
Młynek do jabłek
źródło
źródło
Odpowiedzi:
Reszta zdania to:
Zasadniczo oznacza to, że następujący element XML
może być reprezentowany w ten sposób w zdenormalizowanym węźle:
Po znormalizowaniu węzeł będzie wyglądał tak
To samo dotyczy atrybutów:
<foo bar="Hello world"/>
komentarzy itp.źródło
Mówiąc prościej, normalizacja to redukcja zwolnień.
Przykłady redundancji:
a) białe spacje poza znacznikami root / document ( ... <document> </document> ... )
b) białe spacje w tagach początkowych (< ... >) i końcowych (</ ... >)
c) białe spacje między atrybutami i ich wartościami (tj. spacje między nazwą klucza a = " )
d) zbędne deklaracje przestrzeni nazw
e) podziały linii / białe spacje w tekstach atrybutów i znaczników
f) komentarze itp ...
źródło
Jako rozszerzenie odpowiedzi @ JBNizet dla bardziej technicznych użytkowników, oto jak wygląda implementacja
org.w3c.dom.Node
interfejsucom.sun.org.apache.xerces.internal.dom.ParentNode
, daje wyobrażenie o tym, jak to naprawdę działa.Przebiega rekursywnie przez wszystkie węzły i wywołuje
kid.normalize()
Ten mechanizm jest nadpisany
org.apache.xerces.dom.ElementImpl
Mam nadzieję, że to pozwoli Ci zaoszczędzić trochę czasu.
źródło