Mémorandum pour vous-même
Bibliothèque d'analyse XML
Nous emprunterons le XML des poèmes japonais sur le site ici.
<?xml version="1.0" encoding="UTF-8"?>
<Manyoshu>
<Volume non="1">
<chanson>
<Numéro de morceau>8</Numéro de morceau>
<Original>Jukudatsu 尓 marin Sebu Noboru Tsukiwaiter Shiomo 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>(Plein de lumière plus folle) Shino, dans le domaine du territoire de l'empereur Tenchi, oh, tu as tellement secoué ta manche,
Le gardien de terrain peut le voir.
</sens>
</chanson>
<chanson>
<Numéro de morceau>23</Numéro de morceau>
<Original>Uchima 乎 Mao Ou Shiramizuro Yuya Shooting, etc. Kagari Shimano Pearl Algae Masu</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 Kano Shimayuki</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)Prenez les algues de l'île et mangez-les ...<br />Asagu(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 Pas de 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 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("--------------------------------------------------------");
}
}
}
}
}
}
Résultat de sortie
L'élément racine est Manyoshu
Son élément enfant est Volume
Numéro de morceau: 8
Original:Jukudatsu 尓 marin Sebu Noboru Tsukiwaiter Shiomo 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:(Plein de lumière plus folle) Shino, dans le domaine du territoire de l'empereur Tenchi, oh, tu as tellement secoué ta manche,
Le gardien de terrain peut le voir.
--------------------------------------------------------
Numéro de morceau: 23
Original:Uchima 乎 Mao Ou Shiramizuro Yuya Shooting, etc. Kagari Shimano Pearl Algae Masu
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 Kano Shimayuki
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 Pas de 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.
--------------------------------------------------------
//Bibliothèque de lecture de documents
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
//Bibliothèque pour la manipulation de documents
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{
//Lecture de documents
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.parse("waka.xml")
Cela ressemble à une phrase standard ici
//Obtenir l'élément racine
Element root = document.getDocumentElement();
//Afficher le nom du nœud racine
System.out.println(root.getNodeName());
Il semble que vous puissiez obtenir l'élément de la couche supérieure à partir de la position actuelle avec la méthode getDocumentElement
.
Ensuite, récupérez le nom d'élément du nœud obtenu par la méthode getNodeName
.
Au fait, vous pouvez également obtenir la valeur de l'attribut avec la méthode getAttribute ()
.
//Obtenir des nœuds enfants
NodeList childNodeList = root.getChildNodes();
//Boucle sur le nœud enfant acquis
for(int child_i = 0; child_i < childNodeList.getLength(); child_i++){
Node childNode = childNodeList.item(child_i);
//Si le nœud enfant est un nœud d'élément
if(childNode.getNodeType() == Node.ELEMENT_NODE){
//Obtenir le nom de nœud d'un nœud enfant
System.out.println("Its child element is "+childNode.getNodeName());
System.out.println("");
Obtenez les éléments enfants de cet élément avec la méthode getChildNodes
.
Déterminez le type du nœud avec getNodeType
Voir ici pour les types de nœuds (https://www.techscore.com/tech/Java/JavaSE/DOM/2-3/)
//Obtenir le nœud petit-enfant
NodeList grandchildNodeList = childNode.getChildNodes();
//Boucle à l'intérieur du nœud petit-enfant
for(int grachild_i = 0; grachild_i < grandchildNodeList.getLength(); grachild_i++){
//Si le nœud petit-enfant est un nœud d'élément
if(grandchildNodeList.item(grachild_i).getNodeType()==Node.ELEMENT_NODE){
//Obtenir le nœud arrière-petit-fils du nœud petit-enfant
NodeList gre_grandchildNodeList = grandchildNodeList.item(grachild_i).getChildNodes();
//Boucle sur le nœud arrière-petit-fils
for(int gre_grachild_i = 0; gre_grachild_i < gre_grandchildNodeList.getLength(); gre_grachild_i++){
Node node = gre_grandchildNodeList.item(gre_grachild_i);
//Si le nœud est un nœud d'élément, affichez le nom et le contenu du nœud
if(node.getNodeType() == Node.ELEMENT_NODE){
System.out.println(node.getNodeName() + " : " + node.getTextContent());
}
}
System.out.println("--------------------------------------------------------");
Vous pouvez afficher le contenu de l'élément avec la méthode getTextContent
.
Recommended Posts