IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Format d'échange (XML, JSON...) Java Discussion :

Comment generer ce fichier XML avec DOM ?


Sujet :

Format d'échange (XML, JSON...) Java

  1. #1
    Membre du Club Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Points : 61
    Points
    61
    Par défaut Comment generer ce fichier XML avec DOM ?
    salut ,

    soit le fichier suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <select   type="simple" max_count="20" family="CONTEXT">
    	<field name="CONTEXT_ID"/>
    	<field name="CLIENT"/>
    	<field name="ACTIVITY"/>
    	<field name="CONTEXT"/>
    	<where>
    		<fsc:exp field="CLIENT" xsi:type="fsc:inExpType" op="in">
    			<fsc:item value="Client1"/>			
    		</fsc:exp>		
    	</where>
     
    </select>

    comment je peux le generer en utilisant DOM ( org.dom4j.*) et plus precisemment en utilisant des methodes d'ajout d'attributs d'elements ou de noeuds ( je les decouvre).

    merci
    Ce que l'on fait dans sa vie...

  2. #2
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2005
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Points : 210
    Points
    210
    Par défaut
    Quand tu dis générer c'est quoi exactement ? créer un ifchier xml puis lui ajouter le code de ton post ou simplement ouvrir un fichier existant ?

    Moi pour la récupération j'utilise ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DocumentBuilderFactory create = DocumentBuilderFactory.newInstance();	
    DocumentBuilder constructor = create.newDocumentBuilder();
     
    /** reading of the XML file with DOM */
    xml = choixFichier.getSelectedFile();
    document = constructor.parse(xml);
    xml est de type File
    document est de type Document

    après tu travailles sur le document.


    PS:je n'ai pas mis les exceptions

  3. #3
    Membre du Club Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Points : 61
    Points
    61
    Par défaut
    le creer integralement comme le format que j'ai posté
    Ce que l'on fait dans sa vie...

  4. #4
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2005
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Points : 210
    Points
    210
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    xml = new File(s);	   		   			   	
    choixFichier.setSelectedFile(xml);	   		   		
    DocumentBuilderFactory create = DocumentBuilderFactory.newInstance();				   	     
    DocumentBuilder constructor = create.newDocumentBuilder();
    /** reading of the XML file with DOM */
    FileWriter sortie = new FileWriter(xml);	
    sortie.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE select SYSTEM \"TADTD.dtd\">\n<select>\n</select>");
    sortie.flush();
    sortie.close();
    document = constructor.parse(xml);
    là on vient juste de créer l'en-tête du fichier avec les 2 premières balises <select> et </select> (pour avoir une racine)

    Pour travailler sur le document :
    tu utilises des Node et NodeList, ça devrait aller tout seul

    Pour sauvegarder le tout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    	public void saveConfiguration(String filename) {
    	    XMLSerializer serialiser = null;
    	    OutputFormat outf= new OutputFormat(document);
    	    outf.setIndent(0);
    	    outf.setIndenting(true);
    	    outf.setEncoding("ISO-8859-1");
    	    try {
    	      serialiser = new XMLSerializer(new FileOutputStream(filename), outf );
    	    }
    	    catch (FileNotFoundException ex) {
    	      System.out.println("FileNotFoundException : error "+ ex);
    	    }
    	    try {
    	      serialiser.serialize(document);
    	    }
    	    catch (IOException ex1) {
    	      System.out.println("IOException : error "+ ex1);
    	    }
    	  }
    En espérant que ça t'aide.

  5. #5
    Membre du Club Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Points : 61
    Points
    61
    Par défaut
    merci

    mais je ne sais pas comment utiliser el node et nodelist pourrais tu stp juste me generer le fichier que je veux avec ce que tu vien sde dire comme ca je pourrais avoir un exemple servant de reference

    et merci
    Ce que l'on fait dans sa vie...

  6. #6
    Membre du Club Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Points : 61
    Points
    61
    Par défaut
    et au fait je viens d'essayer le code que tu as mis et il y a plein d'erreurs ...quels autres packages je dois importer ?

    j'ai actuellement ca : import org.dom4j.*;

    merci
    Ce que l'on fait dans sa vie...

  7. #7
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2005
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Points : 210
    Points
    210
    Par défaut
    est-ce-que tu as créé une DTD pour ton fichier XML ? si oui peux tu me la donner sinon je vasi voir comment faire sans

  8. #8
    Membre du Club Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Points : 61
    Points
    61
    Par défaut
    merci cher ami
    Ce que l'on fait dans sa vie...

  9. #9
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2005
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Points : 210
    Points
    210
    Par défaut
    Citation Envoyé par jlassira
    et au fait je viens d'essayer le code que tu as mis et il y a plein d'erreurs ...quels autres packages je dois importer ?

    j'ai actuellement ca : import org.dom4j.*;

    merci
    ouais je sais qu'il y a des erreurs puisque le code est en vrac. Qu'estce que tu as comme erreur et as-tu une DTD ?

  10. #10
    Membre du Club Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Points : 61
    Points
    61
    Par défaut
    non pas de DTD .... je veux un simple fichier xml comme je te l'ai montré
    Ce que l'on fait dans sa vie...

  11. #11
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2005
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Points : 210
    Points
    210
    Par défaut
    voilà du code mais le problème c'est qu'il repose sur une DTD prédéfinie à l'avance donc si tu n'as pas de DTD ça ne marchera pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.FileWriter;
    import java.io.IOException;
     
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.ParserConfigurationException;
     
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.Node;
    import org.xml.sax.SAXException;
     
    import com.sun.org.apache.xml.internal.serialize.OutputFormat;
    import com.sun.org.apache.xml.internal.serialize.XMLSerializer;
     
    public class Test {
     
    	public static void main(String[] args) {
    		File xml = new File("monfichier.xml");                               		                    
    		DocumentBuilderFactory create = DocumentBuilderFactory.newInstance();                        
    		DocumentBuilder constructor;
    		try {
    			constructor = create.newDocumentBuilder();
    			/** reading of the XML file with DOM */ 
    			FileWriter sortie = new FileWriter(xml);    
    			sortie.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE select SYSTEM \"TADTD.dtd\">\n<select>\n</select>"); 
    			sortie.flush(); 
    			sortie.close(); 
    			Document document = constructor.parse(xml);
    			if (document != null) {
    				Node n = document.getFirstChild();
    				Element e1 = document.createElement("field");
    				e1.setAttribute("name","CONTEXT_ID");				
    				Element e2 = document.createElement("field");
    				e2.setAttribute("name","CLIENT");
    				Element e3 = document.createElement("field");
    				e3.setAttribute("name","ACTIVITY");
    				Element e4 = document.createElement("field");
    				e4.setAttribute("name","CONTEXT");				   
    				Element e5 = document.createElement("where");
    				Element e6 = document.createElement("fsc:exp");
    				e6.setAttribute("field","CLIENT");
    				e6.setAttribute("xsi:type","fsc:inExpType");
    				e6.setAttribute("op","in");
    				Element e7 = document.createElement("fsc:item");
    				e7.setAttribute("value","Client1");
     
    				if (n != null) {
    					n.appendChild(e1);
    					n.appendChild(e2);
    					n.appendChild(e3);
    					n.appendChild(e4);
    					e6.appendChild(e7);
    					e5.appendChild(e6);
    					n.appendChild(e5);					
    				}
    			}
    			XMLSerializer serialiser = null; 
    		    OutputFormat outf= new OutputFormat(document); 
    		    outf.setIndent(0); 
    		    outf.setIndenting(true); 
    		    outf.setEncoding("ISO-8859-1"); 
    		    serialiser = new XMLSerializer(new FileOutputStream(xml), outf ); 
    		    serialiser.serialize(document); 
    		} catch (ParserConfigurationException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (SAXException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} 
    	}
    }

    edit : j'avais oublié la partie sauvegarde.

  12. #12
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2005
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Points : 210
    Points
    210
    Par défaut
    il appelle la DTD pour le :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Document document = constructor.parse(xml);
    qui va lui permettre de vérifier l'ordre des éléments.

  13. #13
    Membre du Club Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Points : 61
    Points
    61
    Par défaut
    j'ai pas compri :' ...mais j'ai un fichier xsd par contre c'est ca ?
    Ce que l'on fait dans sa vie...

  14. #14
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2005
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Points : 210
    Points
    210
    Par défaut
    tu ne sais pas ce qu'est un fichier DTD ?

    ça te permet de définir la structure qu'auront tes fichiers XML, cad les noeuds obligatoires ou optionnels, l'ordre de ceux-ci, leurs différents attributs et leurs types.

    en fait y'en a pas forcément besoin apparemment, c'est juste quand tu as besoin du résultat quand il est "parsé"

    remplace la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sortie.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE select SYSTEM \"TADTD.dtd\">\n<select>\n</select>");
    par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sortie.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<select>\n</select>");
    et ça marche !!!

  15. #15
    Membre du Club Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Points : 61
    Points
    61
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
     
    			Document lDocument = DocumentHelper.createDocument();
    			lDocument.setXMLEncoding("ISO8859-1");			
     
            // utiliser ici l'objet lRoot pour la suite

    comment partir de ce bout de code pour regenerer l ameem chose ?

    merci
    Ce que l'on fait dans sa vie...

  16. #16
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2005
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Points : 210
    Points
    210
    Par défaut
    pourquoi celà, tu ne veux pas utiliser ce que je t'ai fourni ?

  17. #17
    Membre du Club Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Points : 61
    Points
    61
    Par défaut
    si si ...mais pour l emoment et pour uen demo on vient de m'imposer ca ;( ..aide moi please!
    Ce que l'on fait dans sa vie...

  18. #18
    Membre du Club Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Points : 61
    Points
    61
    Par défaut
    alors pas de piste ?
    Ce que l'on fait dans sa vie...

  19. #19
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2005
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Points : 210
    Points
    210
    Par défaut
    il est de quel type l'objet lRoot ?

Discussions similaires

  1. Réponses: 9
    Dernier message: 26/07/2006, 16h22
  2. comment ouvrir un fichier XML avec excel
    Par ALCINA dans le forum XML/XSL et SOAP
    Réponses: 7
    Dernier message: 24/03/2006, 14h42
  3. [XML] Comment parser ce fichier XML avec java !
    Par jlassira dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 13/03/2006, 12h56
  4. [DOM] [Débutant(e)] Modifier un fichier XML avec DOM
    Par macks dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 05/07/2005, 14h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo