Mon DOM (Java)

Mémorandum pour vous-même

À quoi sert la bibliothèque DOM?

Bibliothèque d'analyse XML

Exemple de XML utilisé cette fois

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>

Exemple de code

Texte intégral


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.
--------------------------------------------------------

Explication partielle du code

Importation de bibliothèque

//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;

Charger le document

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

        //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 éléments enfants

        //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 des éléments petits-enfants et arrière-petits-enfants

            //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

Mon DOM (Java)
Mon StAX (Java)
Ma référence Java
Mon modèle DAO (Java)
Ma note d'étude (Java)
Java
Java
Ma note de profit: Présentation de Java à Ubuntu
Apprendre Java (0)
Mes réflexions sur la méthode d'égalité (Java)
Étudier Java ―― 3
[Java] tableau
Java protégé
[Java] Annotation
Module [Java]
Étudier Java ―― 9
Java scratch scratch
Astuces Java, astuces
Méthodes Java
Méthode Java
java (constructeur)
Tableau Java
[Java] ArrayDeque
java (remplacement)
java (méthode)
Journée Java 2018
Chaîne Java
java (tableau)
Java statique
Sérialisation Java
java débutant 4
JAVA payé
Étudier Java ―― 4
Java (ensemble)
tri shell java
[Java] compareTo
Étudier Java -5
java réfléchissant 获 获 举
java (interface)
Mémorandum Java
Tableau Java
Étudier Java ―― 1
[Java] Array
[Java] Polymorphisme
Étudier Java # 0
Revue Java
framework java
Fonctionnalités Java
[Java] Héritage
FastScanner Java
Fonctionnalités Java
java débutant 3
Mémo Java
java (encapsulation)
Héritage Java
[Java] Surcharge
Les bases de Java
Décompiler Java
[Java] Annotation
note java
java débutant