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 et supression avec un index


Sujet :

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

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 113
    Par défaut Ajout et supression avec un index
    Bonjour

    J'ai un probléme dans JDOM, il semble que la gestion des index dans la classe Element sois bizarre. En effet, si je suprime ou si je rajoute un Element avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Element.removeContent(int index)
    ou
    Element.addContent(int index, Content child)
    il me suprime pas le bon Element (quand il suprime un Element et pas un Text!), ou ne me rajoute un Element au mauvais endroit.

    En foyant un peu dans les fichier source et grace à l'outils de debug d'Eclipse, j'ai vue que dans JDOM les tableau contenant les Element possede des objet entre chaque Element, ce qui modifie la taille du tableau et donc l'index...


    Quelqu'un aurait une explication?

    PS : en fouillant un peu, j'ai trouvé des sujet qui semblent poser le même probleme.
    http://www.developpez.net/forums/sho...highlight=jdom
    Mais cette solution ne marche pas; et
    http://www.developpez.net/forums/sho...highlight=jdom
    qui explique mais ne résout pas.

  2. #2
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 113
    Par défaut
    Bon, aprés quelque fouille voici je que j'ai.

    Si, par exemple, j'ai une suite de 4 Element dans mon fichier xml,
    blabla entête
    <racine>
    <element0></element0>
    <element1></element1>
    <element2></element2>
    <element3></element3>
    </racine>
    mon objet JDOM construit les Element sous la forme d'un tableau, mais avec de case en plus (j'ai volontairement dégager l'Element racine):
    case contenue
    0 text "\n"
    1 element1
    2 text "\n"
    3 element2
    4 text "\n"
    5 element3
    6 text "\n"
    7 element4
    8 text "\n"
    Donc, si, pour suprimer mon Element 2 je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int index = 2;
    monElement.removeContent(index);
    il va me suprimer la case 2 qui ne possede pas d'élement, mais du text...
    Faut donc que je fasse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int index = 2;
    monElement.removeContent(index*2+1);
    la logique est la même lors d'un ajout mais avec index*2.


    L'ennuit étant que je ne peux pas faire deux modif d'affilé:
    Je veux rajouter un element et en effacer un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    //rajout mon troisieme element à l'index 2
    int index = 2;
    monElement.addContent(index*2, newElement);
    le tableau d'Element JDOM devient:
    case contenue
    0 text "\n"
    1 element0
    2 text "\n"
    3 element1
    4 text "\n"
    5 newElement
    6 element2
    7 text "\n"
    8 element3
    9 text "\n"
    j'ai maintenant 5 Element. Je veux suprimer le dernier, donc index 4:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    //suprime un element à l'index 4
    int index = 4;
    monElement.removeContent(index*2+1);
    Et la, ça marche plus, il va me suprimer un case contenant du text .
    L'ajout d'un nouveau Element n'a pas rajouter la case de text qui va avec et qui permettrai de garder un structure de tableau identique (un Element suivit un text)

    La solution serai d'enrengistrer puis de re-ouvrir le fichier xml... Bonjour la perte de temps!

    y aurais t'il d'autre méthode?

  3. #3
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 45
    Par défaut
    Bonjour,
    je n'est pas tress bien comprista reponse
    mais si tu recherche un methode qui t'ajout un element au bon endroit.
    une fois que tu a le noeud(node) qui doit preceder ton nouveau element
    tu fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    node.getParentNode().insertBefore(newnode,node);
    en esperent repondre a ta question

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 113
    Par défaut
    Ben, j'aurai préferer utilisé JDOm uniquement (histoire de me simplifier la vie) et visiblement tes méthode conseillées n'y sont pas.

    Sinon, le probleme reste le même : comment avoir le noeud avec l'index de ce noeud via JDOM?

  5. #5
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 45
    Par défaut
    ici pour tant j'utiliser jdom de w3.org il est tres complet


    regard ce lien ça ma aider

    http://www.w3.org/TR/2004/REC-DOM-Le.../DOM3-Core.pdf

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 113
    Par défaut
    Oui, mais JDOM, ce n'est pas DOM...

    C'est justement une alternative au spécification de w3. JDOM utilise à la fois les spécifications et les implémentations java de SAX et DOM.

    peut être confus tu l'api indépendante org.jdom et l'api de sun qui utilise les spécification de w3 javax.xml.

    http://xmlfr.org/actualites/tech/040910-0001
    http://cynober.developpez.com/tutoriel/java/xml/jdom/

    Tout cela pour dire qu'il y a une p'tit erreur de conception dans JDOM, ou en tout cas, un manque de clarté. J'ai trouvé une solution que je posterai ici des que je l'aurais correctement téstée.

Discussions similaires

  1. [Delphi6][interbase6]=> requête de supression avec parame
    Par guence dans le forum Bases de données
    Réponses: 5
    Dernier message: 27/07/2005, 14h59
  2. Paradox:Probleme avec les index
    Par byte dans le forum Bases de données
    Réponses: 2
    Dernier message: 06/01/2005, 16h08
  3. pb avec un index sur interbase
    Par kivoch dans le forum InterBase
    Réponses: 2
    Dernier message: 18/12/2004, 21h48
  4. Réponses: 1
    Dernier message: 02/01/2003, 12h45

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