Ajouter des données dans un fichier XML avec DOM

fonkyom Messages postés 3 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 7 mars 2008 - 5 févr. 2008 à 16:23
devwithjava Messages postés 21 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 23 septembre 2008 - 7 févr. 2008 à 09:02
j'ai ce code mais il ajoute rien, il remplace !

merci de m'aider

voici mon xml

<?xml version= "1.0" encoding="ISO-8859-1"?>
<!DOCTYPE élément-racine SYSTEM "catalogue.dtd"> 
<catalogue>
   
        4586524
        <nom>belle_rouge</nom>
        <duree>21.15</duree>
        <chemin>C:\Donnees\</chemin>
   

   
        8574696
        <nom>belle_bleu</nom>
        <duree>05.23</duree>
        <chemin>C:\Donnees\</chemin>
   

</catalogue>

je voudrais donc rajouter un element piece a la suite sans toucher aux autres

et le code que j'ai

import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
import java.io.*;

//package javaapplication16;

/**
 *
 * @author ADMINLOCAL
 */
 public class Main
 {
    public static void transformerXml(Document document, String fichier)
        {
            try {
            // Création de la source DOM
            Source source = new DOMSource(document);
   
            // Création du fichier de sortie
            File file = new File(fichier);
            Result resultat = new StreamResult(fichier);
   
            // Configuration du transformer
            TransformerFactory fabrique = TransformerFactory.newInstance();
            Transformer transformer = fabrique.newTransformer();
            transformer.setOutputProperty(OutputKeys.INDENT, "yes");
            transformer.setOutputProperty(OutputKeys.ENCODING, "ISO-8859-1");
           
            // Transformation
            transformer.transform(source, resultat);
        }catch(Exception e){
            e.printStackTrace();   
        }
        }
    public static void main(String[] args)
    { 
        try{
            // Création d'un nouveau DOM
            DocumentBuilderFactory fabrique = DocumentBuilderFactory.newInstance();
            DocumentBuilder constructeur = fabrique.newDocumentBuilder();
            Document document = constructeur.newDocument();
           
            // Propriétés du DOM
            document.setXmlVersion("1.0");
            document.setXmlStandalone(true);
           
            // Création de l'arborescence du DOM
            Element racine = document.createElement("catalogue");
            //racine.appendChild(document.createComment("Commentaire sous la racine"));
           
            Element personne = document.createElement("piece");
            personne.setAttribute("id","3");
            racine.appendChild(personne);
           
            Element nom = document.createElement("nom");
            nom.setTextContent("belle_verte");
            personne.appendChild(nom);
           
            Element prenom = document.createElement("duree");
            prenom.setTextContent("26.12");
            personne.appendChild(prenom);
           
            Element adresse = document.createElement("chemin");
            adresse.setTextContent("D:/");
            personne.appendChild(adresse);
           
            document.appendChild(racine);
           
            //Sauvegarde du DOM dans un fichier XML
            transformerXml(document, "ExempleDOM.xml");
        }catch(Exception e){
            e.printStackTrace();
        }          
    }
 }

ce code ne fait rien du tout en fait donc si quelqu'un a une idée ! 
merci

2 réponses

kimung Messages postés 3 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 6 février 2008
6 févr. 2008 à 01:33
Hello fonkyom,

Au niveau de la création de tes éléments, je ne vois pas de problème,
donc à première vue, cela doit venir de l'écriture dans le fichier.

Essaie donc de passer par un XMLSerializer (je n'ai jamais utilisé javax.xml.transform.*)

            File file = new File("c:/test.xml");
            PrintWriter writer = new PrintWriter(file);
           
            org.apache.xml.serialize.XMLSerializer ser =
                    new org.apache.xml.serialize.XMLSerializer(
                    writer,
                    new OutputFormat("xml", "ISO-8859-1", true));
            ser.serialize(document);
           
            writer.close();

En espérant que cela t'a aidé.
0
devwithjava Messages postés 21 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 23 septembre 2008
7 févr. 2008 à 09:02
Bonjour,
j pas de reponse car j ai pas utilisé le DOM
personnellement j'ai travaillé avec JAXB et vraiment c tres simple et consistant j te conseille de l'essayer
JAXB permet le parse des fichiers XML ainsi que leurs construction via des get et des set que jaxb genere à partir des fichiers xsd qui correspond à ton fichier xml
cordialement
0
Rejoignez-nous
A voir également