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 d'une balise avec un attribut différent. [JDOM]


Sujet :

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

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 46
    Points : 39
    Points
    39
    Par défaut Ajout d'une balise avec un attribut différent.
    Bonjour,

    j'aimerai modifier un xml contenant plusieurs balises avec un nom identique mais des attributs différents.

    voici un exemple du fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?xml version="1.0" encoding="UTF-8"?>
    <list>
      <skill id="0001" levels="" name="">
        <table name="#mpConsume">1414</table>
        <table name="#power">9865</table>
      </skill>
    </list>
    Ce que j'aimerai faire c'est ajouter une balise <table> avec un nouvel attribut autre que ceux déjà existant.

    par exemple ajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <table name="#magicLvl">50 65 99</table>
    Pour commencer je regarde si il y a des balises <table> existantes ( contenu dans le noeud <skill> </skill> skillFind) :
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    		/* [TABLE] On list les balises <table> [TABLE]*/
    		List listTable = skillFind.getChildren("table");
    		if (listTable.isEmpty()){
    			 if (Attributes.magicLvlIsActive()){
    				table = new Element("table");
    				skillFind.addContent(table);
     
    				table.setAttribute("name", "#magicLvl");
    				table.setText(att.getMagicLvl());
    			 }
     
    			 if (Attributes.mpConsumeIsActive()){
    				table = new Element("table"); 
    				skillFind.addContent(table); 
     
    				table.setAttribute("name", "#mpConsume");
    				table.setText(att.getMagicLvl());
    			 }
     
    			 if (Attributes.powerIsActive()){
    				table = new Element("table");
    				skillFind.addContent(table);
     
    				table.setAttribute("name", "#power");
    				table.setText(att.getMagicLvl());
    			 }
    		}
    		Iterator itable = listTable.iterator();
    		List toBeAdded = new ArrayList();
    		while(itable.hasNext())
    		{
     
    		    Element tableFind = (Element)itable.next();
     
     
    		    //Modification du power
    		    if ( tableFind.getAttributeValue("name").equals("#power") ){
    			if ( !tableFind.getText().equals(att.getPower()) && att.getPower()!=null ){
    			    tableFind.setText(att.getPower());
    			}
    			if (!Attributes.powerIsActive()){
    			    itable.remove();
    			}
    		    }
     
    		    //Modification des mpConsume
    		    if ( tableFind.getAttributeValue("name").equals("#mpConsume") ){
    			if ( !tableFind.getText().equals(att.getMpConsume()) && att.getMpConsume()!=null ){
    			    tableFind.setText(att.getMpConsume());
    			}
    			if (!Attributes.mpConsumeIsActive()){
    			    itable.remove();
    			}
    		    }
     
    		    //Modification des magicLvl
    		    if ( tableFind.getAttributeValue("name").equals("#magicLvl") ){
    			if ( !tableFind.getText().equals(att.getMagicLvl()) && att.getMagicLvl()!=null ){
    			    tableFind.setText(att.getMagicLvl());
    			}
    			if (!Attributes.mpConsumeIsActive()){
    			    itable.remove();
    			}
    		    }
     
    }
    Avec ce code, je peux ajouter des balises si aucunes balises <table> n'est detectées ( listTable.isEmpty() ) et supprimer/modifier une balises avec un attribu bien précis.

    Mais je n'arrive pas ajouter une balise <table> avec un attribu autre que ceux déjà existant.
    Pouvez-vous m'éclairer svp.

    Merci d'avance.

  2. #2
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 14
    Points : 13
    Points
    13
    Par défaut
    Hello,

    Je ne sais pas si j'ai bien saisi le problème, mais avec une méthode qui vérifie l'existence de la valeur de l'attribut name dans les noeuds table présents, ça peut t'aider ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        private static boolean attribExists(Element elem, String newAttrib) {
            boolean attribExists = false;
     
            List listTable = elem.getChildren("table");
            Iterator it = listTable.iterator();
            while (it.hasNext()) {
                Element current = (Element) it.next();
                if (newAttrib.equals(current.getAttributeValue("name"))) {
                    attribExists = true;
                }
            }
     
            return attribExists;
        }
    Code non testé, mais ça doit marcher.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 46
    Points : 39
    Points
    39
    Par défaut
    Edit: J'ai finalement procédé avec la methode de lioledingue, merci bien, ça fonctionne

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

Discussions similaires

  1. Selectionner une balise avec un attribut ayant deux valeur
    Par lemok dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 09/05/2007, 17h25
  2. [XSLT] - Comment selectionner une balise avec un nom variable ?
    Par bchabot dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 25/04/2006, 09h59
  3. Ecrire dans une CEdit avec deux Couleurs Différentes
    Par yoyothebest dans le forum MFC
    Réponses: 1
    Dernier message: 25/03/2006, 19h09
  4. Ajout dans une liste avec un bouton
    Par Invité dans le forum Access
    Réponses: 6
    Dernier message: 07/12/2005, 08h27
  5. Une fonction avec des attributs non obligatoires
    Par YanK dans le forum Langage
    Réponses: 5
    Dernier message: 15/11/2002, 13h39

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