Mein StAX (Java)

Memorandum für sich StAX verwendet entweder XMLStreamReader oder XMLEventReader zum Lesen von XML. Diesmal habe ich XMLStreamReader verwendet.

Der Unterschied zwischen der Verwendung von SAX, StAX und DOM an erster Stelle

Hier ist hilfreich. Dies war ebenfalls hilfreich.

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 ich darauf steige, wenn ich einen Monat warte, wird die Flut nicht kommen, jetzt rudere ich(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>Shino (voller verrückter Licht), auf dem Gebiet von Kaiser Tenchi, oh, Sie können Ihren Ärmel so sehr schütteln und der Feldwächter kann Sie 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 Kano Shimayuki</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)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.</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)Lass es uns immer wieder ohne Unterbrechung sehen.</Bedeutung>
	</Lied>
 </rollen>
</Manyoshu>


Vollständiger Code

import java.nio.file.Paths;
import java.io.FileInputStream;

import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.XMLStreamConstants;

public class StAXSample{
    public static void main(String args[]) throws Exception {
        XMLStreamReader reader = null;
    
        try{
            XMLInputFactory factory = XMLInputFactory.newInstance();
            reader = factory.createXMLStreamReader(new FileInputStream(Paths.get("waka.xml").toFile()));

            String tagName = null;
            String content = null;

            while(reader.hasNext()){
                int eventType = reader.next();

                switch(eventType){
                    case XMLStreamConstants.START_ELEMENT:
                        tagName = reader.getName().getLocalPart();
                        break;

                    case XMLStreamConstants.CHARACTERS:
                        content = reader.getText();
                        break;
                        
                    case XMLStreamConstants.END_ELEMENT:
                        if(reader.getName().getLocalPart().equals("Lied")){
                        break;        
                        }else if(reader.getName().getLocalPart().equals("rollen")){
                        break;        
                        }else if(reader.getName().getLocalPart().equals("Manyoshu")){
                        break;        
                        }
                        System.out.println(tagName + " : " + content);
                        if (reader.getName().getLocalPart().equals("Bedeutung")){
                            System.out.println("==================================================");
                        break;
                        }
                    default:
                        break;
                }
            }
        }finally{
            if(reader != null){
                reader.close();
            }
        }
    }
}

Ausgabeergebnis

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 ich darauf steige, wenn ich einen Monat warte, wird die Flut nicht kommen, jetzt rudere ich(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:Shino (voller verrückter Licht), auf dem Gebiet von Kaiser Tenchi, oh, Sie können Ihren Ärmel so sehr schütteln und der Feldwächter kann Sie 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 Kano Shimayuki
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.
==================================================

Teilkommentar

Bibliotheksimport

import java.nio.file.Paths;
import java.io.FileInputStream;

import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.XMLStreamConstants;

XML-Datei lesen

public class StAXSample{
    public static void main(String args[]) throws Exception {
        XMLStreamReader reader = null;

        try{
            //Generieren Sie XMLInputFactory
            XMLInputFactory factory = XMLInputFactory.newInstance();
            //Rufen Sie den Inhalt der Datei in XMLStreamReader ab
            reader = factory.createXMLStreamReader(new FileInputStream(Paths.get("waka.xml").toFile()));
            //Variablen für den Druck
            String tagName = null;
            String content = null;

reader = factory.createXMLStreamReader (neuer FileInputStream (Paths.get (" file.xml "). ToFile ())); ist wie eine Menge, die durch diese Reihe von Prozeduren entschieden wird. Um es kurz zu erklären

Ereignistyp und bedingter Zweig

            //Wenn es das nächste Ereignis gibt
            while(reader.hasNext()){
                //Rufen Sie den Typ des folgenden Ereignisses ab
                int eventType = reader.next();
                //Fallformel für jedes Ereignis
                switch(eventType){
                    //Wenn es ein Start-Tag ist
                    case XMLStreamConstants.START_ELEMENT:
                        tagName = reader.getName().getLocalPart();
                        break;
                    //Wenn es ein Text wäre
                    case XMLStreamConstants.CHARACTERS:
                        content = reader.getText();
                        break;
                    //Wenn es ein End-Tag ist
                    case XMLStreamConstants.END_ELEMENT:
                        //Bedingte Verzweigung nach Elementnamen
                        if(reader.getName().getLocalPart().equals("Lied")){
                        break;        
                        }else if(reader.getName().getLocalPart().equals("rollen")){
                        break;        
                        }else if(reader.getName().getLocalPart().equals("Manyoshu")){
                        break;        
                        }
                        System.out.println(tagName + " : " + content);
                        if (reader.getName().getLocalPart().equals("Bedeutung")){
                            System.out.println("==================================================");
                        break;
                        }
                    default:
                        break;
                }
            }

Grundsätzlich bestimmt die Methode hasNext des XMLInputStreamReader-Objekts, ob es das nächste Ereignis gibt. Wenn ja, der Ablauf des Lesens des nächsten Ereignisses mit der "nächsten" Methode.

Schließen Sie XMLInputStreamReader

}finally{
            if(reader != null){
                reader.close();
            }
        }
    }
}

Recommended Posts

Mein StAX (Java)
Mein DOM (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] Anmerkung
[Java] Modul
Java-Array
Java-Tipps, Tipps
Java-Methoden
Java-Methode
Java (Konstruktor)
Java-Array
[Java] ArrayDeque
Java (überschreiben)
Java (Methode)
Java Day 2018
Java (Array)
Java statisch
Java-Serialisierung
JAVA hat bezahlt
Java (gesetzt)
Java-Shell-Sortierung
Java studieren -5
Java reflektierend 获 获 举
Java (Schnittstelle)
Java-Memorandum
Java studieren ―― 1
[Java] Array
[Java] Polymorphismus
Java # 0 studieren
Java-Überprüfung
Java-Framework
Java-Funktionen
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
Java (add2)
JAVA (Karte)
[Java] -Schnittstelle
Java-Grundlagen
Java-Methoden
Java-Tagebuch
[Java] enum (Aufzählungstyp)
[Java] FizzBuzzCounter