Modifier un fichier XML en Java – (DOM Parser)
Dans ce tutoriel nous allons découvrir comment modifier un fichier XML en Java en utilisant DOM Parser.
Nous allons voir comment :
- Ajouter un nouvel élément
- Modifier l’attribut d’un élément existant
- Modifier la valeur d’un élément existante
- Supprimer un élément existant
Exemple:
Nous allons travailler sur le fichier XML suivant (test.xml):
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>alex 25 paris
Maintenant, nous allons mettre à jour le fichier XML ci-dessus via DOM XML Parser.
1- Modifier l’attribut employee id="1"
import java.io.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.*;
public class Main {
public static void main(String argv[]) {
try {
String file = "c:\\test.xml";
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(file);
// Récupérer l'élément racine
Node entreprise = doc.getFirstChild();
// Récupérer l'élément employee
Node employee = doc.getElementsByTagName("employee").item(0);
// Modifier l'attribut employee id="1" à id="5"
NamedNodeMap attr = employee.getAttributes();
Node node = attr.getNamedItem("id");
node.setTextContent("5");
// écrire le contenu dans le fichier xml spécifié
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
DOMSource src = new DOMSource(doc);
StreamResult res = new StreamResult(new File(file));
transformer.transform(src, res);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Résultat:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>alex 25 paris
2- Modifier la valeur de l’age à 30
import java.io.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.*;
public class Main {
public static void main(String argv[]) {
try {
String file = "c:\\test.xml";
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(file);
// Récupérer l'élément racine
Node entreprise = doc.getFirstChild();
// Récupérer l'élément employee
Node employee = doc.getElementsByTagName("employee").item(0);
// Récupérer la liste des nœuds fils de employee
NodeList list = employee.getChildNodes();
for (int i = 0; i < list.getLength(); i++) {
Node node = list.item(i);
// Récupérer l'élément age et modifier la valeur
if ("age".equals(node.getNodeName())) {
node.setTextContent("30");
}
}
// écrire le contenu dans un fichier xml
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
DOMSource src = new DOMSource(doc);
StreamResult res = new StreamResult(new File(file));
transformer.transform(src, res);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Résultat:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>alex 30 paris
3- Supprimer l’élément « name »
import java.io.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.*;
public class Main {
public static void main(String argv[]) {
try {
String file = "c:\\test.xml";
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(file);
// Récupérer l'élément racine
Node entreprise = doc.getFirstChild();
// Récupérer l'élément employee
Node employee = doc.getElementsByTagName("employee").item(0);
// Récupérer la liste des nœuds fils de employee
NodeList list = employee.getChildNodes();
for (int i = 0; i < list.getLength(); i++) {
Node node = list.item(i);
//Supprimer l'élément name
if ("name".equals(node.getNodeName())) {
employee.removeChild(node);
}
}
// écrire le contenu dans un fichier xml
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
DOMSource src = new DOMSource(doc);
StreamResult res = new StreamResult(new File(file));
transformer.transform(src, res);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Résultat:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>30 paris
4- Ajouter un nouvel élément « fonction »
import java.io.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.*;
public class Main {
public static void main(String argv[]) {
try {
String file = "c:\\test.xml";
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(file);
// Récupérer l'élément racine
Node entreprise = doc.getFirstChild();
// Récupérer l'élément employee
Node employee = doc.getElementsByTagName("employee").item(0);
// Ajouter un nouveau nœud
Element fonction = doc.createElement("fonction");
fonction.appendChild(doc.createTextNode("commercial"));
employee.appendChild(fonction);
// écrire le contenu dans un fichier xml
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
DOMSource src = new DOMSource(doc);
StreamResult res = new StreamResult(new File(file));
transformer.transform(src, res);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Résultat:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>30 pariscommercial

