Inhaltsverzeichnis:
Video: Build Tomorrow's Library by Jeffrey Licht 2024
Die Dichotomie zwischen linearem Denken und ganzheitlichem Denken trennt (bzw.) SAX von DOM.
SAX (Simple API for XML) behandelt ein XML-Dokument linear und durchläuft ein Dokument Stück für Stück von Anfang bis Ende. Aber mit DOM (dem Document Object Model) springen Sie hinein und schauen sich das gesamte Dokument an. Etwas später vergrößern Sie das Stammelement und konzentrieren sich dann genauer auf ein Element innerhalb des Stammelements. In einigen Situationen ist das Springen genau das, was Sie tun müssen.
DOM-Knoten
Bei DOM denken Sie an ein XML-Dokument mit mehreren Knoten . Beispiele für Knoten enthalten Elemente, Attribute, Kommentare und die Zeichen zwischen einem Paar von Start- und Endtags. Ein ganzes XML-Dokument ist selbst ein Knoten. Alles in allem kann ein XML-Dokument 12 verschiedene Arten von Knoten haben.
Die Knoten eines Baums
Zusammengenommen bilden alle DOM-Knoten in einem XML-Dokument einen Baum. Nehmen wir zum Beispiel das Dokument in Listing 1. Der DOM-Baum dieses Dokuments sieht aus wie der Baum in Abbildung 1.
Listing 1: Der Anchovy Lovers Club
Gründer, Präsident, Sekretär, Publicity Manager
Der Baum hat elf Knoten. Um sie zu zählen, beginnen Sie mit dem Zählen der Äste des Baums (bequem in Abbildung 1 dargestellt). Dann zählen Sie den Member firstname = "Herbert" -Zweig ein zweites Mal. (Dieser Zweig hat zwei DOM-Knoten. Das Element mit dem Namen Member ist ein Knoten, und das Attribut firstname = "Herbert" des Elements ist ein Knoten.)
Eine Abhandlung über Bäume
Es gibt ein paar Dinge, die Sie entdecken werden, wenn Sie den Baum in Abbildung 1 betrachten. 1.
- Einige Knoten sind Kinder anderer Knoten. Der Mitgliedsknoten ist zum Beispiel ein Kind des AnchovyLoversClub-Knotens. Das liegt daran, dass in Listing 1 das Member-Element innerhalb des AncoverLoversClub-Elements verschachtelt ist.In ähnlicher Weise ist der Standing-Knoten ein Kind des Member-Knotens. Diese Familien-Analogie geht weiter und weiter. Der Mitgliedsknoten ist der -Patient des Standing-Knotens, und der AncoverLoversClub ist der Vater des Member-Knotens.
- Das gesamte Dokument ist ein Knoten. Dies ist ein wichtiger Punkt, der leicht vergessen werden kann. In Listing 1 ist das Stammelement des Dokuments AnchovyLoversClub. In Abbildung 1 befindet sich der Name AnchovyLoversClub jedoch nicht oben im Baum. Stattdessen befindet sich das Wort #document oben im Baum.Der oberste Knoten eines DOM-Baums repräsentiert ein gesamtes XML-Dokument. Fehler treten auf, wenn Programmierer denken, dass das Stammelement des Dokuments den Baum startet.(Das tut es nicht.)
- Kommentare und Textteile sind Knoten. In Abbildung 1 ist der Kommentar ein untergeordneter Knoten des Dokumentknotens. Das liegt daran, dass der Kommentar in Listing 1 Teil des Dokuments ist. Der Kommentar ist nicht in einem der Elemente des Dokuments verschachtelt.Wieder einmal spielen wir Genealogie. Wir sagen, dass der #document-Knoten zwei Kinder hat - einen Kommentarknoten und einen AnchovyLoversClub-Knoten. Diese beiden Knoten - der Kommentar und der AnchovyLoversClub - werden als Geschwister bezeichnet.Ebenfalls in Abbildung 1 ist der Text Gründer, Präsident, Sekretär, Werbeleiter Teil eines Knotens. In Listing 1 befindet sich der Text Founder, President, Secretary, Publicity Manager innerhalb des Standing-Elements. In Abbildung 1 ist dieser Textknoten also ein untergeordnetes Element des Stehenden Knotens.
- Selbst ignorierbarer Text ist Teil eines Knotens. Gemäß 1 hat der Knoten AnchovyLoversClub drei direkte Kindknoten - zwei Knoten, die mit #text bezeichnet sind, und einen anderen Knoten, der als Member bezeichnet ist. Das liegt daran, dass der Knoten AnchovyLoversClub in Bezug auf DOM drei Dinge beinhaltet.
Wagenrücklauf und drei Leerzeichen
Teilelement
Wagenrücklauf
-
Die Situation ist in Abbildung 2 dargestellt.
-
Die drei Kinder des Member-Knotens - zwei Stück Leerzeichen und ein Standing-Element - sind alle Geschwister.Beachten Sie nun die Punkte und die [cr] in den Abbildungen 1 und 2. Im Baumdiagramm stellt ein Punkt ein Leerzeichen dar und [cr] einen Wagenrücklauf. Bei DOM bilden alle ignorierbaren Whitespaces zwischen dem Start-Tag AnchovyLoversClub und dem Member-Starttag einen Knoten. Beginnend mit der spitzen Klammer, die das Start-Tag AnchovyLoversClub beendet, gehen Sie zur nächsten Zeile, und dann haben Sie drei Leerzeichen vor der spitzen Klammer, die das Member-Start-Tag öffnet. Das ganze Zeug ist ein DOM-Knoten.
- Endtags sind keine Knoten. Bei SAX denken Sie möglicherweise daran, das Member-Element zu starten und das Member-Element später zu beenden. In DOM denken Sie nicht so. Stattdessen besuchen Sie das Member-Element nur einmal. Während dieses Besuchs besuchen Sie das Standing-Element und einen Text. DOM verfügt über keine Methode, die der SAX-Methode endElement entspricht.