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