Mémorandum pour vous-même StAX utilise XMLStreamReader ou XMLEventReader pour lire XML. Cette fois, j'ai utilisé XMLStreamReader.
Ici sera utile. Ce a également été utile.
Nous emprunterons le XML des poèmes japonais sur le site ici.
<?xml version="1.0" encoding="UTF-8"?>
<Manyoshu>
<Numéro de volume="1">
<chanson>
<Numéro de morceau>8</Numéro de morceau>
<Original>Jukudatsu 尓 marin Sebu Noboru Tsukiwaiter Shioge Kana Hinuma de nos jours</Original>
<auteur>Roi Nakuda(Nukata no Ookimi)</auteur>
<en train de lire>Jukudatsu(Venir à)Au bateau(Funa)Quand j'y monte, si j'attends un mois, la marée ne viendra pas, maintenant je ramer(Cette)Faire sortir(je)Dena</en train de lire>
<image>image/m0008.jpg</image>
<sens>Jukudatsu(Venir à)Puis, alors que j'attendais que la lune quitte le navire, la marée s'est finalement améliorée. Il est maintenant temps de mettre les voiles.</sens>
</chanson>
<chanson>
<Numéro de morceau>20</Numéro de morceau>
<Original>Akane Kusashi Takera Maeno est mort Yukio Nomori Nomoriya Kimiyuki Sode Nunryu</Original>
<auteur>Roi Nakuda(Nukata no Ookimi)</auteur>
<en train de lire>garance(Akane)Comme prévu, le champ standard à destination de Shino(Shimeno)Allez, garde des champs(Nomori)Ne regarde pas, tu secoue ta manche</en train de lire>
<image>image/m0020.jpg</image>
<sens>Dans le domaine de Shino, le territoire de l'empereur Tenchi (rempli d'une lumière plus folle), oh, vous pouvez tellement secouer votre manche et le garde du champ peut vous voir.</sens>
</chanson>
<chanson>
<Numéro de morceau>23</Numéro de morceau>
<Original>Tir à Uchima 乎 Mao Ou Shiramizuro Yuya, etc.</Original>
<auteur>auteur不明</auteur>
<en train de lire>Chanvre(Alors), Comme un(Mino)Roi de(Ohokimi), Matelot(Ama)Nareya, Ira(Irago)Île, Tamamo(Tamamo)Tondre</en train de lire>
<image>image/m0023.jpg</image>
<sens>Asagu(Mino)Roi de(Ohokimi)Sama est un marin(Ama)c'est ça,(Non, tu ne l'as pas)Vous prenez les algues de l'île d'Ira</sens>
</chanson>
<chanson>
<Numéro de morceau>24</Numéro de morceau>
<Original>Sora 蝉 yuki Life 蝎 Somi Namiyosho Hama Ira Yukino Shimayuki Tamamo 苅 Nourriture</Original>
<auteur>auteur不明</auteur>
<en train de lire>Déprimé, épargné par la vie, mouillé par les vagues, Ira(Irago)Île, Tamamo(Tamamo)Fauchage(Ou)Nourriture(Est)Mu</en train de lire>
<image>image/m0024.jpg</image>
<sens>Ira, en se mouillant avec les vagues(Irago)Je prends les algues de l'île et les mange ...(Mino)Roi de(Ohokimi)C'est une chanson que les habitants de l'île ont chantée lorsqu'ils ont entendu la chanson qu'ils ont chantée lorsqu'ils ont été envoyés sur l'île d'Ira.</sens>
</chanson>
<chanson>
<Numéro de morceau>28</Numéro de morceau>
<Original>Métaphore du printemps Yoshiyuki Natsurai Shiro Myo Nou Yui Tennoka Raiyama</Original>
<auteur>Empereur Mochito(Jito Tenno)</auteur>
<en train de lire>C'est passé le printemps et l'été arrive(Shirotae)Séchage des vêtements et paradis(Pluie)Montagne parfumée(Kaguyama)</en train de lire>
<image>image/m0028.jpg</image>
<sens>Il semble que le printemps soit passé et que l'été soit arrivé. Mystère blanc(Shirotae)Les vêtements sont Kakuyama(Kaguyama)Je peux le voir.</sens>
</chanson>
<chanson>
<Numéro de morceau>37</Numéro de morceau>
<Original>Satoshi Kazumi Yoshino Non Kawayuki Tokiruno Absolument Mukyu Revenge</Original>
<auteur>Kakimoto Maro(Hitomaro sous l'huître)</auteur>
<en train de lire>Vous pouvez le voir, mais vous ne vous en lassez jamais.(Tokoname)Je regarde à nouveau le bord sans faute</en train de lire>
<image>image/m0037.jpg</image>
<sens>Peu importe le nombre de fois que vous le regardez, vous ne vous lasserez jamais.(Tokoname)Allons le voir encore et encore sans interruption.</sens>
</chanson>
</rouleau>
</Manyoshu>
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("chanson")){
break;
}else if(reader.getName().getLocalPart().equals("rouleau")){
break;
}else if(reader.getName().getLocalPart().equals("Manyoshu")){
break;
}
System.out.println(tagName + " : " + content);
if (reader.getName().getLocalPart().equals("sens")){
System.out.println("==================================================");
break;
}
default:
break;
}
}
}finally{
if(reader != null){
reader.close();
}
}
}
}
Numéro de morceau: 8
Original:Jukudatsu 尓 marin Sebu Noboru Tsukiwaiter Shioge Kana Hinuma de nos jours
auteur:Roi Nakuda(Nukata no Ookimi)
en train de lire:Jukudatsu(Venir à)Au bateau(Funa)Quand j'y monte, si j'attends un mois, la marée ne viendra pas, maintenant je ramer(Cette)Faire sortir(je)Dena
image: image/m0008.jpg
sens:Jukudatsu(Venir à)Puis, alors que j'attendais que la lune quitte le navire, la marée s'est finalement améliorée. Il est maintenant temps de mettre les voiles.
==================================================
Numéro de morceau: 20
Original:Akane Kusashi Takera Maeno est mort Yukio Nomori Nomoriya Kimiyuki Sode Nunryu
auteur:Roi Nakuda(Nukata no Ookimi)
en train de lire:garance(Akane)Comme prévu, le champ standard à destination de Shino(Shimeno)Allez, garde des champs(Nomori)Ne regarde pas, tu secoue ta manche
image: image/m0020.jpg
sens:Shino (plein de lumière de couleur plus folle), dans le champ du territoire de l'empereur Tenchi, oh, vous pouvez tellement secouer votre manche et le garde du champ peut vous voir.
==================================================
Numéro de morceau: 23
Original:Tir à Uchima 乎 Mao Ou Shiramizuro Yuya, etc.
auteur:Auteur inconnu
en train de lire:Chanvre(Alors), Comme un(Mino)Roi de(Ohokimi), Matelot(Ama)Nareya, Ira(Irago)Île, Tamamo(Tamamo)Tondre
image: image/m0023.jpg
sens:Asagu(Mino)Roi de(Ohokimi)Sama est un marin(Ama)c'est ça,(Non, tu ne l'as pas)Vous prenez les algues de l'île d'Ira
==================================================
Numéro de morceau: 24
Original:Sora 蝉 yuki Life 蝎 Somi Namiyosho Hama Ira Yukino Shimayuki Tamamo 苅 Nourriture
auteur:Auteur inconnu
en train de lire:Déprimé, épargné par la vie, mouillé par les vagues, Ira(Irago)Île, Tamamo(Tamamo)Fauchage(Ou)Nourriture(Est)Mu
image: image/m0024.jpg
sens:Ira, en se mouillant avec les vagues(Irago)Je prends les algues de l'île et les mange ...(Mino)Roi de(Ohokimi)C'est une chanson que les habitants de l'île ont chantée lorsqu'ils ont entendu la chanson qu'ils ont chantée lorsqu'ils ont été envoyés sur l'île d'Ira.
==================================================
Numéro de morceau: 28
Original:Métaphore du printemps Yoshiyuki Natsurai Shiro Myo Nou Yui Tennoka Raiyama
auteur:Empereur Mochito(Jito Tenno)
en train de lire:C'est passé le printemps et l'été arrive(Shirotae)Séchage des vêtements et paradis(Pluie)Montagne parfumée(Kaguyama)
image: image/m0028.jpg
sens:Il semble que le printemps soit passé et que l'été soit arrivé. Mystère blanc(Shirotae)Les vêtements sont Kakuyama(Kaguyama)Je peux le voir.
==================================================
Numéro de morceau: 37
Original:Satoshi Kazumi Yoshino Non Kawayuki Tokiruno Absolument Mukyu Revenge
auteur:Kakimoto Maro(Hitomaro sous l'huître)
en train de lire:Vous pouvez le voir, mais vous ne vous en lassez jamais.(Tokoname)Je regarde à nouveau le bord sans faute
image: image/m0037.jpg
sens:Peu importe le nombre de fois que vous le regardez, vous ne vous lasserez jamais.(Tokoname)Allons le voir encore et encore sans interruption.
==================================================
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{
//Générer XMLInputFactory
XMLInputFactory factory = XMLInputFactory.newInstance();
//Obtenez le contenu du fichier dans XMLStreamReader
reader = factory.createXMLStreamReader(new FileInputStream(Paths.get("waka.xml").toFile()));
//Variables pour l'impression
String tagName = null;
String content = null;
reader = factory.createXMLStreamReader (new FileInputStream (Paths.get (" file.xml "). ToFile ()));
est comme un ensemble qui est décidé par cette série de procédures.
Pour expliquer brièvement
-Spécifiez le fichier à lire avec Paths.get ([filena_name) .toFile ())
. Compatibilité des chemins et des fichiers.
-Pour diffuser avec FileInputStream
-CreateXMLStreamReader
crée une instance de XMLStreamReader, mais l'argument doit être un flux.
//S'il y a le prochain événement
while(reader.hasNext()){
//Obtenez le type de l'événement suivant
int eventType = reader.next();
//Formule de cas pour chaque événement
switch(eventType){
//Si c'est une balise de début
case XMLStreamConstants.START_ELEMENT:
tagName = reader.getName().getLocalPart();
break;
//Si c'était un texte
case XMLStreamConstants.CHARACTERS:
content = reader.getText();
break;
//S'il s'agit d'une balise de fin
case XMLStreamConstants.END_ELEMENT:
//Branche conditionnelle par nom d'élément
if(reader.getName().getLocalPart().equals("chanson")){
break;
}else if(reader.getName().getLocalPart().equals("rouleau")){
break;
}else if(reader.getName().getLocalPart().equals("Manyoshu")){
break;
}
System.out.println(tagName + " : " + content);
if (reader.getName().getLocalPart().equals("sens")){
System.out.println("==================================================");
break;
}
default:
break;
}
}
Fondamentalement, la méthode hasNext
de l'objet XMLInputStreamReader détermine s'il y a l'événement suivant,
S'il y en a, le flux de lecture de l'événement suivant avec la méthode next
.
}finally{
if(reader != null){
reader.close();
}
}
}
}
Recommended Posts