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 :

Le nœud d’entrée ne peut pas être vide au niveau d’une source DOM pour newTemplates [DOM]


Sujet :

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

  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    402
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 402
    Points : 337
    Points
    337
    Par défaut Le nœud d’entrée ne peut pas être vide au niveau d’une source DOM pour newTemplates
    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 :
    [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)
    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.

    Voilà la méthode qui consiste à transformer en xml, c'est ici que je patauge un peu :

    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.";
    		}
        }
    Si quelqu'un voit comment je pourrais me sortir de là donc je suis vraiment preneur, merci de lire mon post :]

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    Citation Envoyé par zouuc Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Node response = null
    DOMSource source = new DOMSource(response); // création d'un nouveau DOMSource avec doc comme noeud
    _xmlTransformer.transform(source, result); // transformation du
    Je n'ai pas tout regardé, mais ne devrais-tu pas commencer par utiliser doc au lieu d'un noeud null ?

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    402
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 402
    Points : 337
    Points
    337
    Par défaut
    En effet Astartee, j'ai retiré et j'ai remplacé response par doc tel que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DOMSource source = new DOMSource(doc); // création d'un nouveau DOMSource avec doc comme noeud
    Maintenant la création de fichier xml s'effectue au poil, je te remercie grandement !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 18/06/2014, 11h56
  2. Réponses: 1
    Dernier message: 18/06/2014, 10h59
  3. Vérification d'un champ qui ne peut pas être vide
    Par mathieu dans le forum Téléchargez
    Réponses: 0
    Dernier message: 03/10/2011, 16h56
  4. Erreur : Le champ ne peut pas être une chaîne vide
    Par supertoms dans le forum VBA Access
    Réponses: 5
    Dernier message: 23/04/2008, 07h05
  5. Réponses: 6
    Dernier message: 03/09/2003, 10h29

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