Mein DOM (Java)

Memorandum für sich

Wofür wird die DOM-Bibliothek verwendet?

Bibliothek zum Parsen von XML

Diesmal verwendetes Beispiel-XML

Wir werden das XML japanischer Gedichte von der Website hier ausleihen.

<?xml version="1.0" encoding="UTF-8"?>

<Manyoshu>
 <Band Nr="1">

	<Lied>
		<Songnummer>8</Songnummer>
		<Original>Jukudatsu 尓 Seemann Sebu Noboru Tsukiwaiter Shiomo Kana Hinuma Heutzutage</Original>
		<Autor>König Nakuda(Nukata no Ookimi)</Autor>
		<lesen>
Jukudatsu(Komm zu)Zum Schiff(Funa)Wenn Sie einen Monat warten, scheint die Flut und rudert jetzt(Dies)Ausdrücken(ich)Dena
		</lesen>
		<Bild>image/m0008.jpg</Bild>
		<Bedeutung>Jukudatsu(Komm zu)Dann, als ich darauf wartete, dass der Mond das Schiff verlässt, wurde die Flut endlich besser.
Jetzt ist die Zeit, Segel zu setzen.

		</Bedeutung>

	</Lied>



	<Lied>
		<Songnummer>20</Songnummer>
		<Original>Akane Kusashi Takera Maeno starb Yukio Nomori Nomoriya Kimiyuki Sode Nunryu</Original>
		<Autor>König Nakuda(Nukata no Ookimi)</Autor>
		<lesen>
Krapp(Akane)Wie erwartet ist das Standardfeld für Shino gebunden(Shimeno)Geh, Feldwächter(Nomori)Schau nicht hin, du schüttelst deinen Ärmel
		</lesen>
		<Bild>image/m0020.jpg</Bild>
		<Bedeutung>(Voller verrückter Licht) Shino, auf dem Gebiet von Kaiser Tenchi, oh, du hast deinen Ärmel so sehr geschüttelt,
Der Feldwächter kann es sehen.
		</Bedeutung>
	</Lied>



	<Lied>
		<Songnummer>23</Songnummer>
		<Original>Uchima 乎 Mao Ou Shiramizuro Yuya Schießen usw. Kagari Shimano Perlenalgen Masu</Original>
		<Autor>Autor不明</Autor>
		<lesen>
Hanf(Damit), Als ein(Mino)König von(Ohokimi), Seemann(Ama)Nareya, Ira(Irago)Insel, Tamamo(Tamamo)Mähen
		</lesen>
		<Bild>image/m0023.jpg</Bild>
		<Bedeutung>Asagu(Mino)König von(Ohokimi)Sama ist ein Seemann(Ama)ist es,(Nein, hast du nicht)Sie nehmen die Algen von der Insel Ira</Bedeutung>
	</Lied>



	<Lied>
		<Songnummer>24</Songnummer>
		<Original>Sora 蝉 yuki Leben 乎 Somi Namiyosho Hama Ira Yukino Shimayuki Tamamo 苅 Essen</Original>
		<Autor>Autor不明</Autor>
		<lesen>
Deprimiert, verschontes Leben, nass von Wellen, Ira(Irago)Insel, Tamamo(Tamamo)Mähen(Oder)Essen(Ist)Mu
		</lesen>
		<Bild>image/m0024.jpg</Bild>
		<Bedeutung>Ira, während sie von den Wellen nass wird(Irago)Nimm die Algen von der Insel und iss sie ...<br />Asagu(Mino)König von(Ohokimi)Es ist ein Lied, das die Menschen auf der Insel sangen, als sie das Lied hörten, das sie sangen, als sie auf die Insel Ira geschickt wurden.</Bedeutung>
	</Lied>

	<Lied>
		<Songnummer>28</Songnummer>
		<Original>Frühlingsmetapher Yoshiyuki Natsurai Shiro Myo Nou Yui Tennoka Raiyama</Original>
		<Autor>Kaiser Mochito(Jito Tenno)</Autor>
		<lesen>

Es ist Frühling und der Sommer kommt(Shirotae)Kleidung und Himmel trocknen(Regen)Duftberg(Kaguyama)

		</lesen>

		<Bild>image/m0028.jpg</Bild>

		<Bedeutung>Es scheint, dass der Frühling vergangen ist und der Sommer gekommen ist. Weißes Geheimnis(Shirotae)Die Kleider sind Kakuyama(Kaguyama)Ich kann es sehen.</Bedeutung>

	</Lied>

	<Lied>
		<Songnummer>37</Songnummer>
		<Original>Satoshi Kazumi Yoshino Kein Kawayuki Tokiruno Absolut Mukyu Rache</Original>
		<Autor>Kakimoto Maro(Hitomaro unter der Auster)</Autor>
		<lesen>
Sie können es sehen, aber Sie werden nie müde davon.(Tokoname)Ich schaue immer wieder auf die Kante
		</lesen>
		<Bild>image/m0037.jpg</Bild>
		<Bedeutung>Egal wie oft Sie es betrachten, Sie werden nie müde davon.(Tokoname)Lassen Sie es uns immer und immer wieder ohne Unterbrechung sehen.</Bedeutung>
	</Lied>
 </rollen>
</Manyoshu>

Codebeispiel

Voller Text


import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class DOMSample{
    public static void main(String[] args) throws Exception {

        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
        Document document = documentBuilder.parse("waka.xml");
        
        Element root = document.getDocumentElement();
        System.out.println("Root element is "+root.getNodeName());
    

        NodeList childNodeList = root.getChildNodes();
        for(int child_i = 0; child_i < childNodeList.getLength(); child_i++){
            Node childNode = childNodeList.item(child_i);
            
            if(childNode.getNodeType() == Node.ELEMENT_NODE){
                System.out.println("Its child element is "+childNode.getNodeName());
                System.out.println("");
                
                NodeList grandchildNodeList = childNode.getChildNodes();
                for(int grachild_i = 0; grachild_i < grandchildNodeList.getLength(); grachild_i++){
                    if(grandchildNodeList.item(grachild_i).getNodeType() == Node.ELEMENT_NODE){

                        NodeList gre_grandchildNodeList = grandchildNodeList.item(grachild_i).getChildNodes();
                        for(int gre_grachild_i = 0; gre_grachild_i < gre_grandchildNodeList.getLength(); gre_grachild_i++){
                            Node node = gre_grandchildNodeList.item(gre_grachild_i);
                            if(node.getNodeType() == Node.ELEMENT_NODE){
                                System.out.println(node.getNodeName() + " : " + node.getTextContent());
                            }
                        }
                        System.out.println("--------------------------------------------------------");
                        
                    }
                }
            }
            
        }

    }
}

Ausgabeergebnis

Wurzelelement ist Manyoshu
Das untergeordnete Element ist Volume

Songnummer: 8
Original:Jukudatsu 尓 Seemann Sebu Noboru Tsukiwaiter Shiomo Kana Hinuma Heutzutage
Autor:König Nakuda(Nukata no Ookimi)
lesen:
Jukudatsu(Komm zu)Zum Schiff(Funa)Wenn Sie einen Monat warten, scheint die Flut und rudert jetzt(Dies)Ausdrücken(ich)Dena

Bild: image/m0008.jpg
Bedeutung:Jukudatsu(Komm zu)Dann, als ich darauf wartete, dass der Mond das Schiff verlässt, wurde die Flut endlich besser.
Jetzt ist die Zeit, Segel zu setzen.

--------------------------------------------------------
Songnummer: 20
Original:Akane Kusashi Takera Maeno starb Yukio Nomori Nomoriya Kimiyuki Sode Nunryu
Autor:König Nakuda(Nukata no Ookimi)
lesen:
Krapp(Akane)Wie erwartet ist das Standardfeld für Shino gebunden(Shimeno)Geh, Feldwächter(Nomori)Schau nicht hin, du schüttelst deinen Ärmel

Bild: image/m0020.jpg
Bedeutung:(Voller verrückter Licht) Shino, auf dem Gebiet von Kaiser Tenchi, oh, du hast deinen Ärmel so sehr geschüttelt,
Der Feldwächter kann es sehen.

--------------------------------------------------------
Songnummer: 23
Original:Uchima 乎 Mao Ou Shiramizuro Yuya Schießen usw. Kagari Shimano Perlenalgen Masu
Autor:Unbekannter Autor
lesen:
Hanf(Damit), Als ein(Mino)König von(Ohokimi), Seemann(Ama)Nareya, Ira(Irago)Insel, Tamamo(Tamamo)Mähen

Bild: image/m0023.jpg
Bedeutung:Asagu(Mino)König von(Ohokimi)Sama ist ein Seemann(Ama)ist es,(Nein, hast du nicht)Sie nehmen die Algen von der Insel Ira
--------------------------------------------------------
Songnummer: 24
Original:Sora 蝉 yuki Leben 乎 Somi Namiyosho Hama Ira Yukino Shimayuki Tamamo 苅 Essen
Autor:Unbekannter Autor
lesen:
Deprimiert, verschontes Leben, nass von Wellen, Ira(Irago)Insel, Tamamo(Tamamo)Mähen(Oder)Essen(Ist)Mu

Bild: image/m0024.jpg
Bedeutung:Ira, während sie von den Wellen nass wird(Irago)Ich nehme die Algen von der Insel und esse sie ...(Mino)König von(Ohokimi)Es ist ein Lied, das die Menschen auf der Insel sangen, als sie das Lied hörten, das sie sangen, als sie auf die Insel Ira geschickt wurden.
--------------------------------------------------------
Songnummer: 28
Original:Frühlingsmetapher Yoshiyuki Natsurai Shiro Myo Nou Yui Tennoka Raiyama
Autor:Kaiser Mochito(Jito Tenno)
lesen:
Es ist Frühling und der Sommer kommt(Shirotae)Kleidung und Himmel trocknen(Regen)Duftberg(Kaguyama)

Bild: image/m0028.jpg
Bedeutung:Es scheint, dass der Frühling vergangen ist und der Sommer gekommen ist. Weißes Geheimnis(Shirotae)Die Kleider sind Kakuyama(Kaguyama)Ich kann es sehen.
--------------------------------------------------------
Songnummer: 37
Original:Satoshi Kazumi Yoshino Kein Kawayuki Tokiruno Absolut Mukyu Rache
Autor:Kakimoto Maro(Hitomaro unter der Auster)
lesen:
Sie können es sehen, aber Sie werden nie müde davon.(Tokoname)Ich schaue immer wieder auf die Kante

Bild: image/m0037.jpg
Bedeutung:Egal wie oft Sie es betrachten, Sie werden nie müde davon.(Tokoname)Lass es uns immer wieder ohne Unterbrechung sehen.
--------------------------------------------------------

Teilweise Erklärung des Codes

Bibliotheksimport

//Bibliothek zum Lesen von Dokumenten
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
//Bibliothek zur Dokumentenmanipulation
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

Dokument laden

public class DOMSample{
    public static void main(String[] args) throws Exception{
        //Dokument lesen
        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
        Document document = documentBuilder.parse("waka.xml")

Es fühlt sich hier wie ein Standardsatz an

Holen Sie sich root-Element

        //Holen Sie sich root-Element
        Element root = document.getDocumentElement();
        //Zeigen Sie den Knotennamen des Stammknotens an
        System.out.println(root.getNodeName());

Es scheint, dass Sie das oberste Ebenenelement mit der Methode "getDocumentElement" von der aktuellen Position abrufen können. Ermitteln Sie dann den Elementnamen des Knotens, der mit der Methode "getNodeName" ermittelt wurde.

Übrigens können Sie den Attributwert auch mit der Methode "getAttribute ()" abrufen.

Holen Sie sich untergeordnete Elemente

        //Holen Sie sich untergeordnete Knoten
        NodeList childNodeList = root.getChildNodes();
        //Schleife auf dem erfassten untergeordneten Knoten
        for(int child_i = 0; child_i < childNodeList.getLength(); child_i++){
            Node childNode = childNodeList.item(child_i);
            
            //Wenn der untergeordnete Knoten ein Elementknoten ist
            if(childNode.getNodeType() == Node.ELEMENT_NODE){
                //Ruft den Knotennamen eines untergeordneten Knotens ab
                System.out.println("Its child element is "+childNode.getNodeName());
                System.out.println("");

Rufen Sie die untergeordneten Elemente dieses Elements mit der Methode "getChildNodes" ab. Bestimmen Sie den Typ des Knotens mit getNodeType Hier finden Sie Knotentypen (https://www.techscore.com/tech/Java/JavaSE/DOM/2-3/).

Enkel- und Urenkelelemente bekommen

            //Holen Sie sich Enkelknoten
            NodeList grandchildNodeList = childNode.getChildNodes();
                //Schleife innerhalb des Enkelknotens
                for(int grachild_i = 0; grachild_i < grandchildNodeList.getLength(); grachild_i++){
                    //Wenn der Enkelknoten ein Elementknoten ist
                    if(grandchildNodeList.item(grachild_i).getNodeType()==Node.ELEMENT_NODE){
                        //Holen Sie sich Urenkel Knoten von Enkel Knoten
                        NodeList gre_grandchildNodeList = grandchildNodeList.item(grachild_i).getChildNodes();

                        //Schleife auf Urenkelknoten
                        for(int gre_grachild_i = 0; gre_grachild_i < gre_grandchildNodeList.getLength(); gre_grachild_i++){
                            
                            Node node = gre_grandchildNodeList.item(gre_grachild_i);
                            //Wenn der Knoten ein Elementknoten ist, zeigen Sie den Knotennamen und den Inhalt an
                            if(node.getNodeType() == Node.ELEMENT_NODE){
                                System.out.println(node.getNodeName() + " : " + node.getTextContent());
                            }
                        }
                        System.out.println("--------------------------------------------------------");


Sie können den Inhalt des Elements mit der Methode "getTextContent" anzeigen.

Recommended Posts

Mein DOM (Java)
Mein StAX (Java)
Meine Java-Referenz
Mein DAO-Muster (Java)
Meine Studiennotiz (Java)
Java
Java
Meine Gewinnnotiz: Einführung von Java in Ubuntu
Java lernen (0)
Meine Gedanken zur Equals-Methode (Java)
Java studieren ―― 3
[Java] -Array
Java geschützt
[Java] Anmerkung
[Java] Modul
Java studieren ―― 9
Java Scratch Scratch
Java-Tipps, Tipps
Java-Methoden
Java-Methode
Java (Konstruktor)
Java-Array
[Java] ArrayDeque
Java (überschreiben)
Java (Methode)
Java Day 2018
Java-Zeichenfolge
Java (Array)
Java statisch
Java-Serialisierung
Java Anfänger 4
JAVA hat bezahlt
Java studieren ―― 4
Java (gesetzt)
Java-Shell-Sortierung
[Java] compareTo
Java studieren -5
Java reflektierend 获 获 举
Java (Schnittstelle)
Java-Memorandum
Java-Array
Java studieren ―― 1
[Java] Array
[Java] Polymorphismus
Java # 0 studieren
Java-Überprüfung
Java-Framework
Java-Funktionen
[Java] Vererbung
FastScanner Java
Java-Funktionen
Java Anfänger 3
Java-Memo
Java (Kapselung)
Java-Vererbung
[Java] Überladung
Java-Grundlagen
Java dekompilieren
[Java] Anmerkung
Java Note
Java Anfänger