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 :

Supprimer un noeud [JDOM]


Sujet :

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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2012
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 169
    Par défaut Supprimer un noeud
    salut a tous le monde ,

    je travaile avec jdom sur la manipulation des fichiers xml , j'ai reussi a créer des fichiers xml puis les enregistrer a un endroit precis , et aussi afficher les données du fichier xml dans la console de eclipse

    j'ai probleme avec la suppression d'un element qui existe dans un fichier xml


    voila mon fichier xml :

    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
    <?xml version="1.0" encoding="UTF-8"?>
     
    <personnes>
       <etudiant classe = "P1" niveau = "Bac">
          <nom>El Omari</nom>
         <prenom>Khalid </prenom>
       </etudiant>
     
       <etudiant classe = "P2" niveau = "Master">
          <nom> Benani </nom>
         <prenom>Ali </prenom>
       </etudiant>
     
       <etudiant classe = "P3" niveau = "Licence">
          <nom>El Alami </nom>
         <prenom>Karim </prenom>
       </etudiant>
     
    </personnes>
    je veux supprimer le noeud complet <etudian></etudiant> avec son contenu lorsque classe ="P2"

    je veux faire une condition mais je sais pas comment faire

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Le plus simple est en effet de prendre tout les <etudiant>, pour chacun de vérifier si son attribut "classe" vaut "P2" et si oui, de le supprimer.

    La condition c'est si l'attribut de nom "classe" est equals() à la String "P2"
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre très actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2012
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 169
    Par défaut
    comme ca ? :


    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
     
     
    static void supprElement() {
    		// Dans un premier temps on liste tous les étudiants
    		List listEtudiant = racine.getChildren("etudiant");
    		Iterator i = listEtudiant.iterator();
    		// On parcours la liste grâce à un iterator
    		while (i.hasNext()) {
    			Element courant = (Element) i.next();
     
     
    if (courant.getAttributeValue("classe").equals("P2"));
    			{
    				// On supprime l'Element en question
    				//ici le code pour supprimer le contenu de l'element 
     
    //courant (etudiant)
     
    courant.removeContent();
     
    		}
    	}
    }			}

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Non, i.remove() pour enlever l'élément courant.

    Mais effectivement, j'avais oublié qu'en faisant comme ça, il faut passer par un itérateur. Du coup ce n'est pas si simple que ça.

    Avec l'utilisation des génériques, ça donne ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    List<Element> etudiants = racine.getChildren("etudiant");
    Iterator<Element> itr = etudiants.iterator();
    while(itr.hasNext()) {
      Element etudiant = itr.next();
      if(etudiant.getAttributeValue("classe").equals("P2")) {
        itr.remove();
      }
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre très actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2012
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 169
    Par défaut
    bonjour

    quand j'execute mon application , il ne se passe rien sur mon fichier xml

    alor que j'ai bien ecrit le code que tu m'a donné

    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
    import java.io.File;
    import java.io.IOException;
    import java.util.Iterator;
    import java.util.List;
     
    import org.jdom2.Element;
    import org.jdom2.JDOMException;
    import org.jdom2.input.SAXBuilder;
    import org.jdom2.*;
    import org.jdom2.input.*;
     
    class Supprimer {
    	static Document document;
    	static Element racine;
     
    	public static void main(String[] args) throws IOException, JDOMException {
     
    		// On crée une instance de SAXBuilder
    		SAXBuilder sxb = new SAXBuilder();
    		try {
    			// On crée un nouveau document JDOM a partir du fichier xml de nom
    			// exemple
    			// Le parsing est terminé ;)
    			document = sxb.build(new File("C:/Documents and Settings/Administrateur/Mes documents/workspace/Supprimer_element/ressources/Essai.xml"));
    		}
     
    		// Exception si le fichier est mal formé
    		catch (JDOMException e1) {
    			System.err.println("Fichier xml mal formé");
    		}
    		// Exception si le chemin du fichier n'est pas correcte
    		catch (IOException e2) {
    			System.err.println("Erreur IO...");
     
    		}
    		// On initialise un nouveau élément racine avec l'élément racine du
    		// document.
    		racine = document.getRootElement();
    		Supprimer();
    	}
     
    	private static void Supprimer() {
    		// TODO Auto-generated method stub
    		List listLivres = racine.getChildren("livre");
    		Iterator i = listLivres.iterator();
    		while (i.hasNext()) {
    			Element livre = (Element) i.next();
    			if (livre.getAttributeValue("classe").equals("P2")) {
     
             livre.detach();
    			}
     
    		}
    	}
    }

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    a aucun moment tu n'écrit dans un fichier dans ton code.

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

Discussions similaires

  1. [JTree] Supprimer un noeud de Jtree
    Par Houssem dans le forum Composants
    Réponses: 4
    Dernier message: 02/05/2007, 22h24
  2. C# et XML Probleme pour supprimer un noeud
    Par Zeuth dans le forum Windows Forms
    Réponses: 1
    Dernier message: 18/03/2007, 11h06
  3. [JDOM] Supprimer les noeuds fils
    Par calimero2611 dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 04/07/2006, 13h31
  4. [PHP5][DOM]Supprimer le noeud courant
    Par panpan dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 03/05/2006, 15h01
  5. [DOM XML] Supprimer un noeud
    Par Musashii dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 22/06/2005, 11h19

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