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 noeud xml


Sujet :

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

  1. #1
    Membre actif Avatar de pendoRa
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 317
    Points : 278
    Points
    278
    Par défaut Supprimer noeud xml
    Bonjour,

    apres avoir suivi le tutorial "manipuler des données xml avec java", la partie concernant la mise a jour du fichier xml m'a interessé, cependant lors de l'explication, l'exemple se fait avec une liste, or j'aimerai dans mon application passé par une simple valeur string car chaque noeud est différents ( il n'y a pas plusieurs noeuds "étudiants" par exemple) .

    J'ai ce code la :
    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
    public void supprimer() {
     
    		JOptionPane.showInputDialog("Entrer la radio à supprimer", elementXml);
     
    		SAXBuilder sxb = new SAXBuilder();
    		Document document = null;
    		//radio = listeDev.getSelectedItem().toString();
     
    		try {
    			document = sxb.build(new File("src/radios.xml"));
    			org.jdom.Element racine = document.getRootElement();
    			XPath xpa = null;
    			xpa = XPath.newInstance(radio);
    			racine.removeChild(elementXml);
    			//chemin = xpa.valueOf(racine);
     
    			System.out.println("variable XML : "+valeur);
     
    		} catch (JDOMException e) {
    			System.out.println("Exception 1");
    			e.printStackTrace();
    		} catch (IOException e) {
    			System.out.println("Exception 2");
    			e.printStackTrace();
    		}
    	}
    Comme vous pouvez le voir je souhaite passé par un showInputMessage qui récupèrerai la valeur entrée par l'utilisateur et supprimerai la ligne correspondante dans le fichier XML.

    Fichier XML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" encoding="UTF-8"?> 
    <java version="1.6.0_17" class="java.beans.XMLDecoder"> 
     <rfm>C:\\Users\\**\\Music\\PTI\\rfm.mp3</rfm>
     <rtl>C:\\Users\\**\\Music\\PTI\\rtl.mp3</rtl> 
     <sky>C:\\Users\\**\\Music\\PTI\\skyrock.mp3</sky>
    <rtl2>C:\\Users\\**\\Music\\PTI\\rtl2.mp3</rtl2> 
    <rmc>C:\\Users\\**\\Music\\PTI\\rmc.mp3</rmc> 
    <fun>C:\\Users\\**\\Music\\PTI\\fun.mp3</fun> 
    <nrj>C:\\Users\\**\\Music\\PTI\\nrj.mp3</nrj> 
    <freebox>http://mafreebox.freebox.fr/freeboxtv/playlist.m3u</freebox> 
    </java>

    Merci de m'éclairer.

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Je suis pas franchement certain d'avoir compris, non.

    Quoiqu'il en soit, pour retirer un contenu JDOM de son contenant, il suffit d'appeler detach() dessus.
    Si tes éléments à enlever sont sélectionnés avec un XPath, il suffit de boucler sur les résultats de ce XPath et d'appeler detach() sur chacun.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre actif Avatar de pendoRa
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 317
    Points : 278
    Points
    278
    Par défaut
    Je sais pas si j'ai été clair mais mon processus serait :

    • Pression du menuItem supprimer
    • ouverture d'un JOptionPane
    • L'utilisateur entre la valeur a supprimer
    • la methode supprimer(); enleve du fichier XML la ligne correspondante


    avec .removeChild(nomDuNoeud) ou nomDuNoeud serait la valeur issu du showInputMessage, cela ne peut pas fonctionner plutôt que detach(); ?
    ( Je vais néanmoins explorer ton idée merci )

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par pendoRa Voir le message
    avec .removeChild(nomDuNoeud) ou nomDuNoeud serait la valeur issu du showInputMessage, cela ne peut pas fonctionner plutôt que detach(); ?
    Si bien sûr.
    Mais si c'est ça que tu as besoin de faire, et que tu sais déjà utiliser removeChild(String name) pour ça, je ne vois pas quelle était la question.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre actif Avatar de pendoRa
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 317
    Points : 278
    Points
    278
    Par défaut
    Bonjour,
    ma question est justement la, je connais removeChild(String name); mais je souhaiterai bien l'utilisé dans ma fonction supprimer(); car je compile et rien ne passe dans mon fichier XML .
    Merci

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    JDOM ne modifie pas de fichier.

    JDOM charge un XML dans une structure en mémoire, et permet de consulter et modifier cette structure en mémoire.

    Si tu veux enregistrer les modifications (dans un fichier par exemple, éventuellement le même fichier que celui que tu as lu si tu veux,) il faut utiliser XMLOutputter pour le faire. Cela recréera un nouveau fichier, qui contient toute la structure JDOM que tu lui donnes.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [DOM XML] Supprimer noeud XML/PHP 5
    Par bobo27110 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 31/07/2012, 15h49
  2. [XSLT] supprimer noeuds du xml
    Par chris11fr dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 31/07/2009, 11h48
  3. supprimer noeud XML
    Par Shatter dans le forum ASP.NET
    Réponses: 4
    Dernier message: 16/02/2009, 15h25
  4. [DOM] supprimer un noeud XML
    Par hicham285 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 12/04/2008, 20h28
  5. supprimer noeud XML
    Par rainlily dans le forum ASP.NET
    Réponses: 3
    Dernier message: 24/07/2007, 12h21

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