Digg StumbleUpon LinkedIn YouTube Flickr Facebook Twitter RSS Reset

Java XML: Créer un document XML avec des nœuds, éléments, attributs et commentaires

Java XML: Créer un document XML avec des nœuds, éléments, attributs et commentaires
{filelink=8387}

/***** Code de MesExemples.com *******/
/**
 * @(#)CreerDocXML.java
 *
 *
 * @author 
 *sakoba(java.mesexemples.com) @version 1.00 2013/7/4
 */
 
 
 
import java.io.FileOutputStream;
import java.io.IOException;
 
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.TransformerFactoryConfigurationError;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
 
import org.w3c.dom.Attr;
import org.w3c.dom.CDATASection;
import org.w3c.dom.Comment;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.ProcessingInstruction;
 
public class CreerDocXML {
  private Document document;
 
  public CreerDocXML() {
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    try {
      DocumentBuilder builder = factory.newDocumentBuilder();
      document = builder.newDocument();
    }catch (ParserConfigurationException parserException) {
      parserException.printStackTrace();
    }
 
    Element root = document.createElement("root");
    document.appendChild(root);
 
    // Ajouter un commentaire
    Comment myComment = document.createComment("Ceci est une liste des Notes");
    root.appendChild(myComment);
 
 
    // Ajouter un élément fils
    Node noteNode = createnoteNode(document);
    root.appendChild(noteNode);
 
    // Ajouter une instruction de traitement
    ProcessingInstruction pi = 
    document.createProcessingInstruction("myInstruction",
        "n'importe quoi");
    root.appendChild(pi);
 
    // Section CData
    CDATASection cdata = document.createCDATASection("Vous pouvez ajouter <, >, et ?");
    root.appendChild(cdata);
 
    // Créer le document physiquement
    try {
 
      // Créer un objet DOMSource pour le document
      Source xmlSource = new DOMSource(document);
 
      // Créer un Objet pour transformer le résultat
      Result result = new StreamResult(new 
    FileOutputStream("ExempleDocument.xml"));
 
      // Créer un objet TransformerFactory
      TransformerFactory transformerFactory = TransformerFactory.newInstance();
 
      // créer un objet Transformer
      Transformer transformer = transformerFactory.newTransformer();
      // Définir une propriété de sortie
      transformer.setOutputProperty("indent", "yes");
 
      // Transformer le contenu
      transformer.transform(xmlSource, result);
    }
 
    // GEstion des exceptions
    catch (TransformerFactoryConfigurationError factoryError) {
      System.err.println("Erreur " + "TransformerFactory");
      factoryError.printStackTrace();
    }catch (TransformerException transformerError) {
      System.err.println("Erreur"+ " transforming document");
      transformerError.printStackTrace();
    }    catch (IOException ioException) {
      ioException.printStackTrace();
    }
  }
 
  public Node createnoteNode(Document document) {
 
    // Créer trois éléments et leurs textes
    Element nom = document.createElement("nom");
    Element prenom = document.createElement("prenom");
    Element point = document.createElement("note");
 
    nom.appendChild(document.createTextNode("Nom"));
    prenom.appendChild(document.createTextNode("Prénom"));
    point.appendChild(document.createTextNode("Point"));
 
    // Créer l'élément Note
    Element note = document.createElement("note");
 
    // Créer un atribut
    Attr appreciationAttribute = document.createAttribute("appreciation");
    appreciationAttribute.setValue("Bien");
 
    // Ajouter l'attribut à l'élément note
    note.setAttributeNode(appreciationAttribute);
    note.appendChild(nom);
    note.appendChild(prenom);
    note.appendChild(point);
 
    return note;
  }
 
  public static void main(String args[]) {
    CreerDocXML CreerDocXML = new CreerDocXML();
  }
}

Code testé avec le fichier XML Suivant

<?xml version="1.0" encoding="windows-1252"?>
<!-- Edited by MesEXemple.com -->
<note>
	<to>Sakoba</to>
	<from>Adams</from>
	<heading>Rappel</heading>
	<body>Ne m'oubliez pas ce week-end!</body>
</note>