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 :

[Ajout noeud xml] comment ça marche?


Sujet :

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

  1. #21
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 84
    Points : 40
    Points
    40
    Par défaut
    Me voilà de retour avec un problème, et ce soir je commence à en avoir marre . Là, je viens de me rendre compte que l'ajout ne marche que si on ajoute à la racine. Or moi, j'aimerais ajouter à partir de n'importe quel noeud. Voici une partie de mon code, sachant que mon fichier xml est comme ceci :

    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
    <racine>
      <Node0 nom="..." ident="..." >
        <Node1 nom="..." ident="..." >
          <Node2 nom="..." ident="..." >
            <Node3 nom="..." ident="..." >
              <Node4 nom="..." ident="..." >
                <comment1>mon_texte</comment1>
              </Node4> 
              <Node5 nom="..." ident="..." >
                <comment2>mon_texte</comment2>
              </Node5>       
            </Node3>
          </Node2>
        </Node1>
      </Node0>
    </racine>

    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
    				((Element)Node1).setAttribute("nom",ajoutobjet.getText());
    				((Element)Node1).setAttribute("identifiant","x");
    				((Element)Node2).setAttribute("nom",ajoutaspect.getText());
    				((Element)Node2).setAttribute("identifiant","x");
    				((Element)Node3).setAttribute("nom",ajoutpointintervention.getText());
    				((Element)Node3).setAttribute("identifiant","x");
    				((Element)Node4).setAttribute("debutValidite",ajoutreference1.getText());
    				((Element)Node4).setAttribute("source",ajoutreference2.getText());
    				((Element)Node4).setAttribute("article",ajoutreference3.getText());
    				((Element)Node4).setAttribute("alinea",ajoutreference4.getText());
    				((Element)Node4).setAttribute("identifiant","x");
    				Text comment1 = doc.createTextNode("" + ajoutcommentaire1.getText());
    				commentaireNode1.appendChild(comment1);
    				((Element)Node5).setAttribute("debutValidite",ajoutpenalite1.getText());
    				((Element)Node5).setAttribute("source",ajoutpenalite2.getText());
    				((Element)Node5).setAttribute("article",ajoutpenalite3.getText());
    				((Element)Node5).setAttribute("alinea",ajoutpenalite4.getText());
    				((Element)Node5).setAttribute("identifiant","x");
    				Text comment2 = doc.createTextNode("" + ajoutcommentaire2.getText());
    				commentaireNode2.appendChild(comment2);
     
    				Node0.appendChild(Node1);
    				Node1.appendChild(Node2);
    				Node2.appendChild(Node3);
    				Node3.appendChild(Node4);
    				Node4.appendChild(commentaireNode1);
    				Node3.appendChild(Node5);
    				Node5.appendChild(commentaireNode2);

  2. #22
    Membre expérimenté
    Avatar de viena
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    1 071
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 071
    Points : 1 512
    Points
    1 512
    Par défaut
    le 2eme code que tu as donné ne fonctionne pas?
    qu'est ce qu'il te mets?

  3. #23
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 84
    Points : 40
    Points
    40
    Par défaut
    en fait, ce n'est pas qu'il me fait planter, c'est qu'il ne fait rien du tout, meme si j'essaie de sauvegarder, rien, il ne se passe rien...

  4. #24
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 84
    Points : 40
    Points
    40
    Par défaut
    pour les différentes déclarations des noeuds, j'avais fait ça, je sais pas si ça suffit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    		racine = doc.getDocumentElement();
    		Node0= doc.createElement("SousTheme");
    		Node1= doc.createElement("Objet");
    		Node2= doc.createElement("Aspect");
    		Node3= doc.createElement("Pointintervention"); 
    		Node4= doc.createElement("Reference"); 
    		commentaireNode1 = doc.createElement("Commentaire_ref");
    		Node5= doc.createElement("Penalite");
    		commentaireNode2 = doc.createElement("Commentaire_pen");

    Je me demande aussi un truc. Dans mon fichier xml qui est de cette forme :

    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
    <racine>
      <Node0 nom="..." ident="..." >
        <Node1 nom="..." ident="..." >
          <Node2 nom="..." ident="..." >
            <Node3 nom="..." ident="..." >
              <Node4 nom="..." ident="..." >
                <comment1>mon_texte</comment1>
              </Node4> 
              <Node5 nom="..." ident="..." >
                <comment2>mon_texte</comment2>
              </Node5>       
            </Node3>
          </Node2>
        </Node1>
      </Node0>
    </racine>
    si je veux ajouter un Node3 dans le Node2 déjà existant, je dois faire comment?

  5. #25
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 84
    Points : 40
    Points
    40
    Par défaut
    Salut à tous, je reviens avec une question :

    si je fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Node0.getNodeValue().equals(box1.getSelectedItem());
    la valeur du Node0 devrait être égal à l'item sélectionné de la box1, non?
    (je mets cette question ici, car ça a un rapport avec le code de l'ajout).

    Merci d'avance de vos réponses

  6. #26
    Membre expérimenté
    Avatar de viena
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    1 071
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 071
    Points : 1 512
    Points
    1 512
    Par défaut
    j'ajouterai un acces au fils... mais je suis pas sure, je bidouille toujours avec ca... fo essayer et voir ce que ca donne comme resultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Node0.getNodeValue().getChildNode().equals(box1.getSelectedItem());

  7. #27
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 84
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par viena
    j'ajouterai un acces au fils... mais je suis pas sure, je bidouille toujours avec ca... fo essayer et voir ce que ca donne comme resultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Node0.getNodeValue().getChildNode().equals(box1.getSelectedItem());
    ça marche pas, il me dit que la méthode getChildNode() n'est pas définie pour le type String .

  8. #28
    Membre expérimenté
    Avatar de viena
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    1 071
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 071
    Points : 1 512
    Points
    1 512
    Par défaut
    essaie de faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.println("Valeur : " + Node0.getNodeValue());
    Qu'est ce que ca te renvoie?

  9. #29
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 84
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par viena
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.println("Valeur : " + Node0.getNodeValue());
    Qu'est ce que ca te renvoie?
    ça me renvoie C'est pour ça que je voulais savoir pouquoi l'autre ligne ne marchait pas...

    Le code qui marche pas, c'est pour ajouter un autre Node1 au Node0. Et hier, je me suis rendu compte que la valeur était nulle, donc j'ai vérifié quand j'ajoute un noeud à la racine.
    Mais la valeur retournée est nulle aussi, mais ça marche...

  10. #30
    Membre expérimenté
    Avatar de viena
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    1 071
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 071
    Points : 1 512
    Points
    1 512
    Par défaut
    Deja, ton code, je le trouve un peu mieux comme ca... dis moi ce que tu en pense...
    en rouge, je suppose que ce sont des appels de fonctions... j'ai pas tres bien compris...
    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
          racine = doc.getDocumentElement(); 
          Node sousTheme = doc.createElement("SousTheme"); 
          Node objet= doc.createElement("Objet"); 
          Node aspect= doc.createElement("Aspect"); 
          Node ptInter= doc.createElement("Pointintervention"); 
          Node ref= doc.createElement("Reference"); 
          Node commentaireRef = doc.createElement("Commentaire_ref"); 
          Node penalite= doc.createElement("Penalite"); 
          Node commentairePen = doc.createElement("Commentaire_pen");
     
                objet.setAttribute("nom",[color=red]ajoutobjet[/color].getText()); 
                objet.setAttribute("identifiant","x"); 
                aspect.setAttribute("nom",[color=red]ajoutaspect[/color].getText()); 
                aspect.setAttribute("identifiant","x"); 
                ptInter.setAttribute("nom",[color=red]ajoutpointintervention[/color].getText()); 
                ptInter.setAttribute("identifiant","x"); 
                ref.setAttribute("debutValidite",[color=red]ajoutreference1[/color].getText()); 
                ref.setAttribute("source",[color=red]ajoutreference2[/color].getText()); 
                ref.setAttribute("article",[color=red]ajoutreference3[/color].getText()); 
                ref.setAttribute("alinea",[color=red]ajoutreference4[/color].getText()); 
                ref.setAttribute("identifiant","x"); 
                Text comment1 = doc.createTextNode("" + [color=red]ajoutcommentaire1[/color].getText()); 
                commentaireRef .appendChild(comment1); 
                penalite.setAttribute("debutValidite",[color=red]ajoutpenalite1[/color].getText()); 
                penalite.setAttribute("source",[color=red]ajoutpenalite2[/color].getText()); 
                penalite.setAttribute("article",[color=red]ajoutpenalite3[/color].getText()); 
                penalite.setAttribute("alinea",[color=red]ajoutpenalite4[/color].getText()); 
                penalite.setAttribute("identifiant","x"); 
                Text comment2 = doc.createTextNode("" +  [color=red]ajoutcommentaire2[/color].getText()); 
                commentaireNode2.appendChild(comment2); 
     
               sousTheme .appendChild(objet); 
                objet.appendChild(aspect); 
                aspect.appendChild(ptInter); 
                ptInter.appendChild(ref); 
                ref.appendChild(commentaireRef ); 
                ptInter.appendChild(penalite); 
                penalite.appendChild(commentairePen );

  11. #31
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 84
    Points : 40
    Points
    40
    Par défaut
    non tout ce que tu voulais mettre en rouge sont des noms de JTextField, et non des fonctions.

    Par contre, je peux pas changer mon code comme tu as dit, car la fonction setAttribute(String,String) n'est pas définie pour le type node....

  12. #32
    Membre expérimenté
    Avatar de viena
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    1 071
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 071
    Points : 1 512
    Points
    1 512
    Par défaut
    a ce moment la, remplace juste les declaration Node par Element.
    pour t'aider lis les tutoriels et les cours de formation pour apprendre facilement Java : http://java.developpez.com/cours/

  13. #33
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 84
    Points : 40
    Points
    40
    Par défaut
    oui, je connais ces tutoriels super bien fait, mais pour là où j'en suis, je vois pas comment il pourrait m'aider....

  14. #34
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 84
    Points : 40
    Points
    40
    Par défaut
    je viens de tester ce que tu viens de me dire, ben rien, niet nada. Encore une fois, ce code n'ajoute rien, je comprends pas pourquoi....

  15. #35
    Membre expérimenté
    Avatar de viena
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    1 071
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 071
    Points : 1 512
    Points
    1 512
    Par défaut
    le probleme vient peut être d'ailleurs...
    la declaration de ton arbre peut être...
    parce que la, je vois pas, ce code devrait marcher, je l'ai deja utilisé et il marchait tres bien

  16. #36
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 84
    Points : 40
    Points
    40
    Par défaut
    quand je dis qu'il marche pas, c'est qu'il ne marche pas chez moi quand je veux ajouter des noeuds inférieurs. Par contre, pour ajouter des noeuds fils à la racine, c'est nikel, mais pour les autres, rien. Mais je dis que j'ai quand meme de la chance, il me fait pas planter mon programme.

    dans ton fichier comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <racine nom="...">
      <node0 nom="...">
        <node1 nom="...">
         .....
        </node1>
      </node0>
    </racine>
    comment fais tu pour ajouter un node1 au node0 ? Tu te sers du code que tu m'as donné ou un autre?

    Moi le but, c'est d'ajouter un nouveau noeud et de passer un attribut à ce noeud.

  17. #37
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 84
    Points : 40
    Points
    40
    Par défaut
    j'avais oublié le tag résolu car j'ai fini par trouver le problème peu de temps après mon dernier post. Merci de ton aide

  18. #38
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Bonjour
    J’ai eu un problème au niveau du mise a jour du fichier xml en java avec JDOM si quelqu’un pourra m’aidé

    Mon fichier de début :

    <?xml version="1.0" encoding="UTF-8"?>
    <ordinateurs>
    <ordinateur classe="C1">
    <CPU>4 GHZ</CPU>
    <DRAM>512 MO</DRAM>
    <IP>192.168.1.4</IP>
    </ordinateur>
    <ordinateur classe="C2">
    <CPU>3.8 GHZ</CPU>
    <DRAM>256 MO</DRAM>
    <IP>192.168.1.5</IP>
    </ordinateur>
    </ordinateurs>

    et je veut avoir :

    <?xml version="1.0" encoding="UTF-8"?>
    <ordinateurs>
    <ordinateur classe="C1">
    <CPU>4 GHZ</CPU>
    <DRAM>512 MO</DRAM>
    <IP>192.168.1.4</IP>
    </ordinateur>
    <ordinateur classe="C2">
    <CPU>3.8 GHZ</CPU>
    <DRAM>256 MO</DRAM>
    <IP>192.168.1.5</IP>
    </ordinateur>
    <ordinateur classe="C3">
    <CPU>3.6 GHZ GHZ</CPU>
    <DRAM>128 MO MO</DRAM>
    <IP>192.168.1.6</IP>
    </ordinateur>
    </ordinateurs>

    merci

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. web.xml comment ça marche ?
    Par Adorien dans le forum Servlets/JSP
    Réponses: 0
    Dernier message: 18/03/2010, 15h54
  2. [DOM] PHP5 et XML comment ajouter un noeud dans un noeud précis?
    Par titou250 dans le forum Bibliothèques et frameworks
    Réponses: 12
    Dernier message: 20/04/2006, 21h02
  3. Réponses: 6
    Dernier message: 06/03/2006, 13h38
  4. Réponses: 3
    Dernier message: 01/04/2005, 09h37

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