1. Konzept
XML-Dateien werden hauptsächlich zur Beschreibung von Informationen verwendet. Nach Erhalt eines XML-Dokuments ist das Extrahieren der entsprechenden Informationen entsprechend den Elementen in der XML eine XML-Analyse. Es gibt zwei Möglichkeiten, XML zu analysieren, eine ist die DOM-Analyse und die andere ist die SAX-Analyse. Die beiden Operationsmethoden sind in der Abbildung dargestellt.
2. DOM-Parsing
Der auf DOM-Parsing basierende XML-Parser wandelt es mithilfe eines Baums in eine Sammlung von Objektmodellen um ist eine Datenstruktur, die Informationen speichert. Über die DOM-Schnittstelle kann die Anwendung jederzeit auf jeden Teil der Daten im XML-Dokument zugreifen. Daher wird diese Zugriffsmethode über die DOM-Schnittstelle auch als Direktzugriff bezeichnet.
Diese Methode weist auch Mängel auf, da der DOM-Analysator die gesamte XML-Datei in einen Baum umwandelt und im Speicher speichert. Wenn die Dateistruktur groß oder die Daten komplex sind, erfordert diese Methode einen höheren Speicherbedarf. und das Durchqueren eines Baums mit einer komplexen Struktur ist ebenfalls ein sehr zeitaufwändiger Vorgang. Die von DOM verwendete Baumstruktur stimmt jedoch mit der Art und Weise überein, wie XML Informationen speichert, und sein Direktzugriff kann ebenfalls verwendet werden, sodass die DOM-Schnittstelle immer noch einen umfassenden Nutzungswert hat.
Hier geben wir ein Beispiel, um die Datenstruktur der Konvertierung von XML in einen Baum zu veranschaulichen.
<?xml version="1.0" encoding="GBK"?> <address> <linkman> <name>Van_DarkHolme</name> <email>van_darkholme@163.com</email> </linkman> <linkman> <name>Bili</name> <email>Bili@163.com</email> </linkman> </address>
Die Struktur zum Konvertieren von XML in einen Baum ist:
Es gibt die folgenden 4 Kernoperationsschnittstellen beim DOM-Parsing
Dokument: Diese Schnittstelle repräsentiert das gesamte XML-Dokument und wird als Stamm des gesamten DOM dargestellt, das den Eingang zum Baum darstellt. Über diese Schnittstelle kann auf den Inhalt aller Elemente in der XML zugegriffen werden. Die gängigen Methoden sind wie folgt.
(Hinweis: Obwohl in der obigen Abbildung nicht dargestellt, sind die Attribute „Name“ und „E-Mail“ ebenfalls jeweils ein Knoten)
Gemeinsame Dokumentmethoden
Node: Diese Schnittstelle spielt eine wichtige Rolle im gesamten DOM-Baum. Die Kernschnittstellen von DOM-Operationen werden von Node (Dokument, Element, Attr) geerbt. Im DOM-Baum stellt jede Knotenschnittstelle einen DOM-Baumknoten dar.
Allgemeine Methoden der Knotenschnittstelle
NodeList: Diese Schnittstelle stellt im Allgemeinen eine Sammlung von Punkten dar Wird für eine Reihe von Knoten in einer geordneten Beziehung verwendet.
Gemeinsame NodeList-Methoden
NamedNodeMap: Diese Schnittstelle stellt die Eins-zu-Eins-Beziehung zwischen einer Gruppe von Knoten und ihren eindeutigen Namen dar und wird hauptsächlich verwendet um Knotenattribute darzustellen
Wenn ein Programm zusätzlich zu den oben genannten vier Kernschnittstellen DOM-Analysevorgänge ausführen muss, muss es die folgenden Schritte ausführen:
1. Richten Sie einen DocumentBuilderFactor ein, um ihn abzurufen das DocumentBuilder-Objekt:
DocumentBuilderFactory Factory = DocumentBuilderFactory.newInstance();
2. DocumentBuilder erstellen:
DocumentBuilder Builder = Factory.newDocumentBuilder();
3. Dokumentobjekt erstellen und Eintrag des Baums abrufen:
Document doc = builder.parse("relative path or absolute path of the xml file");
4.
NodeList n1 = doc .getElementByTagName("Read node");
5. XML-Informationen abrufen
public class DOMDemo01 { public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException{ //建立DocumentBuilderFactor,用于获得DocumentBuilder对象: DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); //2.建立DocumentBuidler: DocumentBuilder builder = factory.newDocumentBuilder(); //3.建立Document对象,获取树的入口: Document doc = builder.parse("src//dom_demo_02.xml"); //4.建立NodeList: NodeList node = doc.getElementsByTagName("linkman"); //5.进行xml信息获取 for(int i=0;i<node.getLength();i++){ Element e = (Element)node.item(i); System.out.println("姓名:"+ e.getElementsByTagName("name").item(0).getFirstChild().getNodeValue()); System.out.println("邮箱:"+ e.getElementsByTagName("email").item(0).getFirstChild().getNodeValue()); } } }
Der obige Code wird ab dem vierten Punkt analysiert werden:
Durch doc.getElementByTagName("linkman") erhalten wir eine NodeList. Die obige XML-Datei enthält zwei Linkman-Knoten, daher enthält die NodeList hier zwei Knoten (beide Linkman-Knoten) und Anschließend wird die Schleifenmethode verwendet, um die Informationen in der XML-Datei abzurufen.
Element e = (Element)node.item(i) erhält den Linkman-Knoten, d. h. e zeigt auf Linkman
e.getElementTagName(“name”).item(0). getFirstChild ().getNodeValue();
getElementTagName("name"); Alle Namensknoten unter dem Linkman erhalten (eigentlich nur 1);
Item(0); (nur einer);
getFristChild(); Ruft den Textknoten unter dem Namensknoten ab, der der Knoten ist, in dem sich der Inhalts-Van befindet (wie oben erwähnt, ist der Textinhalt auch ein separater Knoten, createTextNode() in der Liste der Dokumentmethoden). Erstellen Sie den Textknoten);
getNodeValue() ruft den Wert des Textknotens ab: van_darkholme;
Weitere verwandte Fragen finden Sie auf der chinesischen PHP-Website: XML-Video-Tutorial
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in das DOM-Parsing im XML-Parsing. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!