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 :

[removeContent(int)] Enlever un fils par son numéro


Sujet :

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

  1. #1
    Membre averti
    Avatar de if_zen
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 275
    Points : 316
    Points
    316
    Par défaut [removeContent(int)] Enlever un fils par son numéro
    Bonjour,

    Jusqu'à présent le code que je vais vous montrer avait l'air de marcher, mais là, je ne sais pas pourquoi, ça fait n'importe quoi...
    En fait j'ai un document XML avec un root et des paramètres, je passe en argument de la fonction le numéro de paramètre à virer, et je ne sais pas comment il fait sa sauce, mais il ne me supprimer pas du tout, mais pas du tout le bon...

    code source :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    	System.out.println("DEBUG : index = " + index);
    	String desc = new String(new XMLOutputter(Format.getPrettyFormat()).outputString(document));
    	System.out.println("AVANT : \n " + desc);
     
    	System.out.println("RACINE : \n" + racine.getChildren());
    	racine.removeContent(index+1);
    	String descriptif = new String(new XMLOutputter(Format.getPrettyFormat()).outputString(document));
     
    	System.out.println("APRES : \n " + descriptif);

    Voici ce que est généré dans la console :

    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
     
    DEBUG : index = 4
    AVANT : 
     <?xml version="1.0" encoding="UTF-8"?>
    <confuser name="Neuf Telecom" id="7">
      <param name="pop" value="1" />
      <param name="smtp" value="2" />
      <param name="adresse" value="3" />
      <param name="mot de passe" value="4" />
      <param name="Truc" value="5" />
    </confuser>
     
     
    RACINE : 
    [[Element: <param/>], [Element: <param/>], [Element: <param/>], [Element: <param/>], [Element: <param/>]]
    APRES : 
     <?xml version="1.0" encoding="UTF-8"?>
    <confuser name="Neuf Telecom" id="7">
      <param name="pop" value="1" />
      <param name="smtp" value="2" />
      <param name="mot de passe" value="4" />
      <param name="Truc" value="5" />
    </confuser>

    Comme vous voyez, j'ai une racine confuser, 5 feuilles, je passe l'index 4 en paramètre pour supprimer le dernier element (je rajoute 1 donc, parce que le 1er n'est pas 0 mais 1 d'après ce que j'ai compris).
    Et ben magie, il me supprime le 3e, ça n'a rien à voir !

    Merci infiniment pour vos lumières...

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 895
    Points : 1 710
    Points
    1 710
    Par défaut
    Salut,
    je ne sais pas si ça va t'aider mais quelqu'un a poster un sujet concernant l'insertion d'un noeud avec addContent. Peut être que c'est le même problème que pour le removeContent, car la méthode n'agit pas sur le bon noeud.
    http://www.developpez.net/forums/sho...d.php?t=161576

  3. #3
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    Moi je fais comme ca pour supprimer un noeud :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ...
                    // Parse the file
                    Document doc = factory.newDocumentBuilder().parse(new File(fileName));
                    return doc;
    ...
     
    // get the node
        Element element = (Element) doc.getElementsByTagName("bad-node").item(0);
     
        // Remove the node
        element.getParentNode().removeChild(element);
    En bidouillant un peu, tu dois pouvoir récupérer l'index du nom du noeud non ?

  4. #4
    Membre averti
    Avatar de if_zen
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 275
    Points : 316
    Points
    316
    Par défaut
    Bonjour,

    oui mais la le truc c'est que tu sélectionnes le neoud par le nom et non par le numéro
    moi, la structure de mon fichier ressemble à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <root ...>
           <param name="..." value="...">
           <param name="..." value="...">
            ...
    </root>
    donc je ne peux pas sélectionner par le nom, ils s'appellent tous param.

    Bon, en fait j'ai partiellement résolu le probleme, en récupérant la liste des Element sous forme de List, puis en parcourant la liste en cherchant l'élément à supprimer, et en réaffectant la nouvelle liste à la racine. C'est bourin, mais ça fonctionne correctement..

    Par contre, si quelqu'un sait comment marche exactement le removeContent(int), je suis curieux de savoir, parce que manifestement, ça ne fonctionne pas comme je l'attendais.

    Merci infiniment.

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/02/2013, 18h58
  2. appeller une classe par son numéro de création
    Par cobe91 dans le forum Général Python
    Réponses: 4
    Dernier message: 28/04/2011, 22h17
  3. Acceder à une colonne par son numéro
    Par michelp38 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/03/2011, 21h55
  4. Trouver le jour de l'année à partir de son numéro
    Par Nounours666 dans le forum C++Builder
    Réponses: 7
    Dernier message: 09/01/2006, 13h20
  5. Réponses: 4
    Dernier message: 06/06/2004, 12h07

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