In diesem Tutorial habe ich die folgende Zeile im Code für einen DOM-Parser gesehen .
doc.getDocumentElement().normalize();
Warum machen wir diese Normalisierung?
Ich habe die Dokumente gelesen, aber ich konnte kein Wort verstehen.
Setzt alle Textknoten in der vollen Tiefe des Unterbaums unter diesen Knoten
Okay, kann mir dann jemand (vorzugsweise mit einem Bild) zeigen, wie dieser Baum aussieht?
Kann mir jemand erklären, warum eine Normalisierung erforderlich ist?
Was passiert, wenn wir uns nicht normalisieren?
java
xml
dom
computer-science
Apfelschleifer
quelle
quelle
Antworten:
Der Rest des Satzes lautet:
Dies bedeutet im Grunde, dass das folgende XML-Element
könnte so in einem denormalisierten Knoten dargestellt werden:
Bei Normalisierung sieht der Knoten folgendermaßen aus
Gleiches gilt für Attribute :
<foo bar="Hello world"/>
, Kommentare usw.quelle
Normalisierung ist einfach eine Reduzierung von Redundanzen.
Beispiele für Redundanzen:
a) Leerzeichen außerhalb der Stamm- / Dokument-Tags ( ... <Dokument> </ Dokument> ... )
b) Leerzeichen innerhalb des Start-Tags (< ... >) und des End-Tags (</ ... >)
c) Leerzeichen zwischen Attributen und ihren Werten (dh Leerzeichen zwischen Schlüsselname und = " )
d) überflüssige Namespace-Deklarationen
e) Zeilenumbrüche / Leerzeichen in Texten von Attributen und Tags
f) Kommentare usw. ...
quelle
Als Erweiterung der Antwort von @ JBNizet für technisch versierte Benutzer erhalten Sie hier eine Vorstellung davon, wie die Implementierung der
org.w3c.dom.Node
Schnittstelle incom.sun.org.apache.xerces.internal.dom.ParentNode
aussieht.Es durchläuft alle Knoten rekursiv und ruft
kid.normalize()
diesen Mechanismus auf
org.apache.xerces.dom.ElementImpl
Hoffe das spart dir etwas Zeit.
quelle