bonjours,
je veux créer un fichier XML à partir d'une base de données.
En exécutant le code ci-dessous, je trouve que mon fichier XML est bien créé et il contient les données que je veux, mais j'aurais à la fin une exception et dans mon fichier XML il n'y as pas l'entête suivant: <?xml version="1.0" encoding="UTF-8" ?>, sachant que cet entête est affiché dans la console, et pas affiché dans le document XLM crée.

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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
public Createur_XML(String filename,int id_j) {
//la tete du document XML  
     Document document = null; 
     DocumentBuilderFactory fabrique = null;
     ResultSet rs_diagram;
//connection à la base de données
     SGBD manager1=new SGBD();
     manager1.connect("Diagramme","localhost:3307","root","root");
     fabrique = DocumentBuilderFactory.newInstance();
     DocumentBuilder builder = null;
      try {
        builder = fabrique.newDocumentBuilder();
      }
      catch (ParserConfigurationException ex1) {
      }
      document = builder.newDocument();
 
//l'élément uml:model
      Element racine1 = (Element) document.createElement("uml:Model");
      document.createAttribute("xmi:version");
      document.createAttribute("xmlns:xmi");
      document.createAttribute("xmlns:uml");
      document.createAttribute("xmi:id");
      racine1.setAttribute("xmi:version","2.1");
      racine1.setAttribute("xmlns:xmi","http://schema.omg.org/spec/XMI/2.1");
      racine1.setAttribute("xmlns:uml","http://www.eclipse.org/uml2/2.1.0/UML");
      racine1.setAttribute("xmi:id","_kkgsMBeLEd60N8ipLbB6nA");
      document.appendChild(racine1);      
 
//rechercher les noeuds et les flux du diagramme selectionné par l'utilsateur
      rs_diagram=manager1.getQuery("SELECT * FROM diagram WHERE id_diagram=" + id_j);
 
       try {
 
//Entrer les champs du nom, type et identifiant du diagramme d'activité choisit par l'utilisateur    	   
      rs_diagram.next();
      o=rs_diagram.getString("ref_diagram");
      s=rs_diagram.getString("name_diagram");
      Element racine = (Element) document.createElement("packagedElement");
      document.createAttribute("xmi:id");
      document.createAttribute("xmi:type");
      document.createAttribute("name");
      racine.setAttribute("xmi:id",o);
      racine.setAttribute("xmi:type","uml:Activity");
      racine.setAttribute("name",s);    
      racine1.appendChild(racine);
 
      try {
 
    	 JdbcRowSet rowset1 = new JdbcRowSetImpl();
    	 JdbcRowSet rowset2 = new JdbcRowSetImpl();
    	 JdbcRowSet rowset3 = new JdbcRowSetImpl();
    	 JdbcRowSet rowset4 = new JdbcRowSetImpl();
    	 JdbcRowSet rowset5 = new JdbcRowSetImpl();
//MISE EN PLACE DES DIFFERENTES PROPRIETES
       String url1 = "jdbc:mysql://localhost:3307/Diagramme";
       String user1 = "root";
       String password1 = "root";
       String command1 = "SELECT * FROM node WHERE id_diagram=" +id_j;
       System.out.println(command1);
//propriétés nécessaires à la connexion
       rowset1.setUrl(url1);
       rowset1.setUsername(user1);
       rowset1.setPassword(password1);
//propriétés nécessaires à l'exécution
       rowset1.setCommand(command1);
//retourner tous les noeuds du diagramme choisit par l'utilisateur
       rowset1.execute();
//parcours des résultats du dernier au premier tuple
       while(rowset1.next()){
 
        	Element node = (Element) document.createElement("node");
        	String url2 = "jdbc:mysql://localhost:3307/Diagramme";
            String user2 = "root";
            String password2 = "root";
 
//chercher les flux sortants du noeuds en cours de création, ce noeud ne doit pas etre un noeud final                        
            if (rowset1.getInt(4)!= 78)
            {
            String outgoing = "SELECT id_edge FROM edge e  WHERE id_node_source= " + rowset1.getInt(1) ; 
            System.out.println(outgoing);
            //propriétés nécessaires à la connexion
            rowset2.setUrl(url2);
            rowset2.setUsername(user2);
            rowset2.setPassword(password2);
            //propriétés nécessaires à l'exécution
            rowset2.setCommand(outgoing);
            //EXECUTION DU ROWSET POUR LE PEUPLER
            rowset2.execute();
        	rowset2.next();
            }
 
        	String url3 = "jdbc:mysql://localhost:3307/Diagramme";
            String user3 = "root";
            String password3 = "root";
 
//chercher les flux entrants du noeuds en cours de création, ce noeud ne doit pas etre un noeud initial                        
            if (rowset1.getInt(4)!= 77)
            {
 
            String incoming = "SELECT id_edge FROM edge WHERE id_node_target= " + rowset1.getInt(1); 
            System.out.println(incoming);
            //propriétés nécessaires à la connexion
            rowset3.setUrl(url3);
            rowset3.setUsername(user3);
            rowset3.setPassword(password3);    
            rowset3.setCommand(incoming);
            //EXECUTION DU ROWSET POUR LE PEUPLER
            rowset3.execute();
        	rowset3.next();
            }
 
            String url4 = "jdbc:mysql://localhost:3307/Diagramme";
            String user4 = "root";
            String password4 = "root";
//rechercher le nom du type du noeud en cours de création
            String name_type = "SELECT name_type_node FROM type_node WHERE id_type_node= " + rowset1.getInt(4); 
            rowset4.setUrl(url4);
            rowset4.setUsername(user4);
            rowset4.setPassword(password4);
            rowset4.setCommand(name_type);
            rowset4.execute();
        	rowset4.next();       	
 
        	document.createAttribute("xmi:type");
            document.createAttribute("xmi:id");
            document.createAttribute("name");
            document.createAttribute("outgoing");
            document.createAttribute("incoming");
            node.setAttribute("xmi:id",rowset1.getString(1));
            node.setAttribute("xmi:type",rowset4.getString(1));
            node.setAttribute("name",rowset1.getString(3));
            node.setAttribute("outgoing",rowset2.getString(1));
            node.setAttribute("incoming",rowset3.getString(1));
            racine.appendChild(node);
 
     }
 
      rowset2.close();   
      rowset1.close();   
 
         JdbcRowSet rowset = new JdbcRowSetImpl();
       //MISE EN PLACE DES DIFFERENTES PROPRIETES
       String url = "jdbc:mysql://localhost:3307/Diagramme";
       String user = "root";
       String password = "root";
//rechercher tous les flux appartenant au diagramme en cours d'exécution
       String command = "SELECT * FROM edge WHERE id_diagram=" +id_j;
       System.out.println(command);
       //propriétés nécessaires à la connexion
       rowset.setUrl(url);
       rowset.setUsername(user);
       rowset.setPassword(password);
       //propriétés nécessaires à l'exécution
       rowset.setCommand(command);
       //EXECUTION DU ROWSET POUR LE PEUPLER
       rowset.execute();
     //parcours des résultats du dernier au premier tuple
     while(rowset.next())
 
     {
 
    	   String url5 = "jdbc:mysql://localhost:3307/Diagramme";
         String user5 = "root";
         String password5 = "root";
//rechercher le nom du type du flux en cours de création
         String edge_type = "SELECT name_type_edge FROM type_edge WHERE id_type_edge= " + rowset.getInt(4); 
         rowset5.setUrl(url5);
         rowset5.setUsername(user5);
         rowset5.setPassword(password5);
         rowset5.setCommand(edge_type);
         rowset5.execute();
     	   rowset5.next();
         Element edge = (Element) document.createElement("edge");
         document.createAttribute("xmi:id");
         document.createAttribute("name");
         document.createAttribute("source");
         document.createAttribute("target");
         document.createAttribute("xmi:type");
         edge.setAttribute("xmi:id",rowset.getString(1));
         edge.setAttribute("name",rowset.getString(3));
         edge.setAttribute("xmi:type",rowset5.getString(1));
         edge.setAttribute("source",rowset.getString(5));
         edge.setAttribute("target",rowset.getString(6));
         racine.appendChild(edge);
     }
 
         XMLSerializer ser = new XMLSerializer(System.out, new OutputFormat("xml", "UTF-8", true));
         ser.serialize(document);
      }
      catch(Exception e)
      {
        e.printStackTrace();
      }
 
 
//-----enregistrement dans le fichier-------------------//
      Enregistreur_XML Enregistreur=new Enregistreur_XML("C:\\doc_xml",s,document);
 
      if(Enregistreur.enregistrer()==true)
      {
 
 
        JOptionPane.showMessageDialog(this,"Enregistrement effectuer ","Controle d'enregistrement",JOptionPane.DEFAULT_OPTION);
 
 
      }
    }
   catch (SQLException ex) {
    	  System.out.println("fin exportation");
    }
  }
Merci d'avance.