Ich mache einige Tests, aber ich sehe keinen Unterschied, wenn ich die normalize() Methode verwende oder nicht. Aber die Beispiele auf ExampleDepot Website verwenden es. Also, wofür ist es? (Die Dokumentation war auch für mich nicht klar)Was macht die Java Node Normalisierungsmethode?
Antwort
Sie können einen DOM-Baum programmatisch erstellen, der eine fremde Struktur hat, die nicht den tatsächlichen XML-Strukturen entspricht - insbesondere Dinge wie mehrere Knoten vom Typ Text nebeneinander oder leere Knoten von Text eingeben. Das normalize()
-Verfahren entfernt diese, d.h. es kombiniert benachbarte Textknoten und entfernt leere Textknoten.
Dies kann nützlich sein, wenn Sie anderen Code haben, der erwartet, dass DOM-Bäume immer wie etwas aussehen, das aus einem tatsächlichen XML-Dokument erstellt wurde.
Diese im Grunde bedeutet, dass das folgende XML-Element
<foo>hello
wor
ld</foo>
könnte so in einem denormalisierter Knoten dargestellt werden:
Element foo
Text node: ""
Text node: "Hello "
Text node: "wor"
Text node: "ld"
Wenn normalisiert, wird der Knoten wie folgt
Element foo
Text node: "Hello world"
aussehen
Es bereinigt Code von benachbarten Textknoten und leere Textknoten
Normalisieren Sie das Stammelement des XML-Dokuments. Dies stellt sicher, dass alle Text-Knoten unter dem Wurzelknoten in eine "normale" Form gebracht werden, was bedeutet, dass es keine benachbarten Text-Knoten oder leere Text-Knoten in dem Dokument gibt.
Es gibt viele mögliche DOM-Bäume, die der gleichen XML-Struktur entsprechen und jede XML-Struktur hat mindestens einen entsprechenden DOM-Baum. Die Konvertierung von DOM nach XML ist surjective. So kann es passieren, dass:
dom_tree_1 != dom_tree_2
# but:
dom_tree_1.save_DOM_as_XML() == dom_tree_2.save_DOM_as_XML()
Und es gibt keine Möglichkeit für die Gewährleistung:
dom_tree == dom_tree.save_DOM_as_XML().load_DOM_from_XML()
Aber wir würden es gerne bijective haben. Das bedeutet, dass jede XML-Struktur einem bestimmten DOM-Baum entspricht.
Sie können also eine Teilmenge aller möglichen DOM-Bäume definieren, die für die Menge aller möglichen XML-Strukturen bijektiv ist.
# 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()
So normalisierte DOM Bäume perfekt aus ihrer XML-Darstellung rekonstruiert werden. Es gibt keinen Informationsverlust.
- 1. Was macht die break-Anweisung in Java?
- 2. compareTo Java - Was macht das?
- 3. Was macht fpstrict in Java?
- 4. In Java, was macht object.class?
- 5. Was macht "do" hier? (Java)
- 6. Was macht Collections.unmodiableSet() in Java?
- 7. Was macht die registerNatives() Methode?
- 8. Was macht die Klassenmethode in diesem Code?
- 9. Was macht die Verwendung von e.consume() in Java
- 10. Was macht :: Java-Operator in diesem Kontext?
- 11. Was macht das Objekt in Java?
- 12. Was macht den Java-Compiler so schnell?
- 13. Was macht dieser Java-Post-Inkrement-Operator?
- 14. Was macht >> in Java?
- 15. Was macht die vorfieldinit Flagge?
- 16. Was macht die Autoloads-Umgebung?
- 17. Was macht die Funktion invisible()?
- 18. Was macht die Funktion tf.nn.embedding_lookup?
- 19. Mockito - was macht die Verifikationsmethode?
- 20. Was macht die Cmpq-Anweisung?
- 21. Was genau macht die Datenbanknormalisierung?
- 22. Was macht die LEAL-Montageanleitung?
- 23. Was macht die Bindung langsam?
- 24. Was macht die php-Funktion 'overload'?
- 25. Was macht sun.awt.geom.Crossings?
- 26. Java's Collections.shuffle macht was?
- 27. Was macht die Option -Xss JVM eigentlich?
- 28. Was macht == in Ruby?
- 29. Was bei der Durchführung von Versuchen die folgende Aussage macht
- 30. Was macht der ^?