Méthode d'analyse (parsing) d'un fichier xml – DOM (à partir d'un exemple)

 

On veut, à partir du fichier xml suivant :

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

<employes>

    <employe id="1">

        <firstName>John</firstName>

        <lastName>Doe</lastName>

    </employe>

    <employe id="2">

        <firstName>Jane</firstName>

        <lastName>Smith</lastName>

    </employe>

</employes>

 

Obtenir l'affichage suivant :

Nombre d'employés : 2

 

Employé ID : 1

Prénom : John

Nom : Doe

 

Employé ID : 2

Prénom : Jane

Nom : Smith

 

Code permettant d'obtenir ce résultat :

import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.parsers.DocumentBuilder;

import org.w3c.dom.*;

 

import java.io.*;

 

public class ParsingXML_DOM

{

    public static void main(String[] args)

    {

        try

        {

            // 1. Charger le fichier XML

            File xmlFile = new File("./src/document/employes.xml");

 

            // 2. Créer une instance de DocumentBuilderFactory

            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

 

            // 3. Créer un DocumentBuilder

            DocumentBuilder builder = factory.newDocumentBuilder();

 

            // 4. Parser le fichier XML et obtenir un Document DOM

            Document doc = builder.parse(xmlFile);

 

            // 5. Normaliser le document (nettoyage des espaces et structure uniforme)

            doc.getDocumentElement().normalize();

 

            // 6. Récupérer tous les éléments <employe>

            NodeList employeList = doc.getElementsByTagName("employe");

 

            System.out.println("Nombre d'employés : " + employeList.getLength());

 

            // 7. Parcourir la liste des employés

            for (int i = 0; i < employeList.getLength(); i++)

            {

                Node node = employeList.item(i);

 

                // Vérifier que le nœud est un élément

                if (node.getNodeType() == Node.ELEMENT_NODE)

                {

                    Element employe = (Element) node;

                    // Récupérer l'attribut "id"

                    String id = employe.getAttribute("id");

 

                    // Récupérer les sous-éléments <firstName> et <lastName>

                    String firstName = employe.getElementsByTagName("firstName").item(0).getTextContent();

                    String lastName = employe.getElementsByTagName("lastName").item(0).getTextContent();

 

                    // Afficher les données de l'employé

                    System.out.println("\nEmployé ID : " + id);

                    System.out.println("Prénom : " + firstName);

                    System.out.println("Nom : " + lastName);

                }

            }

        }

        catch (Exception e)

        {

                e.printStackTrace();

        }

    }

}