package org.llgc; import java.io.File; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; public class XMLDOM { public static void readXML () { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance (); try { DocumentBuilder parser = factory.newDocumentBuilder (); File XFile = new File ("atelier.xml"); Document root = parser.parse (XFile); NodeList childs = root.getElementsByTagName ("customers").item (0).getChildNodes (); for (int i = 0; i < childs.getLength (); i++) { Node node = childs.item (i); if ( (node.getNodeType () == org.w3c.dom.Node.ELEMENT_NODE) && (node.getNodeName ().equals ("customer"))) { Element el = (Element) node; System.out.println (el.getAttribute ("id") + " " + el.getTextContent ()); } } } catch (SAXException | IOException | ParserConfigurationException e) { e.printStackTrace (); return; } } public static void writeXML () { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance (); try { DocumentBuilder parser = factory.newDocumentBuilder (); Document document = parser.newDocument (); Element root = document.createElement ("contacts"); document.appendChild (root); String[][] contacts = { { "Dupont", "Pierre", "192.168.1.100" }, { "Dupond", "Paul", "192.168.1.101" }, { "Ducont", "Jack", "192.168.1.102" }, { "Ducond", "Peter", "192.168.1.103" }, { "Dutont", "Arf", "192.168.1.104" } }; int i = 0; for (String[] contact : contacts) { ++i; Element contactXML = document.createElement ("contact"); contactXML.setAttribute ("id", Integer.toString (i)); Element contactNom = document.createElement ("nom"); contactNom.setTextContent (contact[0]); contactXML.appendChild (contactNom); Element contactPrenom = document.createElement ("prenom"); contactPrenom.setTextContent (contact[1]); contactXML.appendChild (contactPrenom); Element contactIP = document.createElement ("ip"); contactIP.setTextContent (contact[2]); contactXML.appendChild (contactIP); root.appendChild (contactXML); } TransformerFactory transformerFactory = TransformerFactory.newInstance (); Transformer transformer = transformerFactory.newTransformer (); DOMSource source = new DOMSource (document); StreamResult sortie = new StreamResult (new File ("contact.xml")); transformer.setOutputProperty (OutputKeys.VERSION, "1.0"); transformer.setOutputProperty (OutputKeys.ENCODING, "UTF-8"); document.setXmlStandalone (false); // Ne marche pas : transformer.setOutputProperty (OutputKeys.STANDALONE, // "yes"); transformer.setOutputProperty (OutputKeys.INDENT, "yes"); transformer.setOutputProperty ("{http://xml.apache.org/xslt}indent-amount", "2"); transformer.transform (source, sortie); } catch (ParserConfigurationException | TransformerException e) { e.printStackTrace (); return; } } public static void main (String[] args) { readXML (); writeXML (); } }