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();
}
}
}