Bonjour, avant tout je débute encore en Java et xml, je suis en train de réaliser un premier projet en relation avec ces derniers et j'éprouve quelques difficultés.
Tout d'abords, mon application java consiste à réaliser de l'exportation d'informations stockées sur une BDD. Je m'y prend de la manière suivante :
Je fais une connexion à ma BDD (ça fonctionne)
Je récupère les informations souhaitées par une requête SQL (ça fonctionne)
Je les inscrit dans une collections (ça fonctionne)
Je m'aide de cette collection pour y récupérer ces informations et les inscrire dans un fichier xml (je suis bloqué là)
Durant mon stage cette année, j'ai effectuer le même genre de manœuvre, cependant, il existait deja des méthodes pour faire ce fichier xml lorsque nous avions la collection avec ses informations.
Ici je réutilise cette méthode mais ça n'est pas au point, je voudrais donc un peu d'aide car avec le message d'erreur qui m'est affiché durant l'exécution de mon application, je n'ai rien trouvé sur internet...
Voila mon message d'erreur :
Il y a bien affichage dans un premier temps puis ensuite j'affiche une variable de type doc qui est sensé récupérer les informations de la collection, mais elle est vide et ça plante juste après.[Filtre-electrique, Ruban-Electrique]
[#document: null]
java.lang.IllegalArgumentException: Le nœud d’entrée ne peut pas être vide au niveau d’une source DOM pour newTemplates !
at org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:364)
at test.Recuperation.ExportComponent(Recuperation.java:136)
at test.Recuperation.ExportAllComposant(Recuperation.java:70)
at test.Graphisme.actionPerformed(Graphisme.java:42)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Voilà la méthode qui consiste à transformer en xml, c'est ici que je patauge un peu :
Si quelqu'un voit comment je pourrais me sortir de là donc je suis vraiment preneur, merci de lire mon post :]
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 public static void ExportComponent(ArrayList listComp, String FileName, String ExportPath) throws Exception { System.out.println(listComp); //1. Construction de la requete CIS (Document) DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setNamespaceAware(true); _docBuilder = factory.newDocumentBuilder(); org.w3c.dom.Document doc = _docBuilder.newDocument(); Element root = doc.createElement("Parts"); for(int i = 0; i < listComp.size(); i++) { Element ExportComponent = doc.createElement("Part"); String partNumber = (String)listComp.get(i); String attrName = MyXML.isUUID(partNumber) ? "uid" : "partnumber"; ExportComponent.setAttribute(attrName, partNumber); root.appendChild(ExportComponent); } doc.appendChild(root); System.out.println(doc); // test //2. soumission de la requete au CIS et récupération de la réponse if(doc != null) { Node response = null; //3. Post-traitement : ici, écriture des données transmises. Transformer _xmlTransformer; // Pour la création de xml (voir persistXML) _xmlTransformer = TransformerFactory.newInstance().newTransformer(); String filePathName = (new StringBuilder()).append(ExportPath).append('/').append(FileName.replaceAll("[\\/:*?]", "-")).toString(); OutputStream stream = ((OutputStream) (new FileOutputStream(filePathName))); DOMSource source = new DOMSource(response); // création d'un nouveau DOMSource avec doc comme noeud StreamResult result = new StreamResult(stream); _xmlTransformer.transform(source, result); // transformation du contenu du result et du source en XML stream.flush(); // vide le buffer stream.close(); // ferme le buffer String message = (new StringBuilder()).append("XML successfully written to ").append(filePathName).toString(); System.out.println("Info" + message); //ExportComponentResultat = "succeed."; } else //quitte le programme si la communication avec le serveur est trop longue ou si une erreur survient { //ExportComponentResultat = "failed."; } }
Partager