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 :

Suppression d'un element XML


Sujet :

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

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Suppression d'un element XML
    Bonjour,
    Je suis novice en XML/Java et je dois via java supprimer un element d'un fichier XML ( ex : supprimer l'element contenant nom="achille" ):

    Voici le fichier de test XML "facture.xml":
    -----------------------------------------------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?xml version="1.0"?>
     
    <facture date="01/06/2004" montant="20.80">
    	<client id="1" nom="achille"/>
    	<client id="2" nom="talon"/>
    </facture>
    Voici mon code java :
    --------------------------
    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
     
     
    package com.cap.xml;
    import java.io.*;
     
    import org.w3c.dom.*;
    import org.xml.sax.*;
     
    import javax.xml.parsers.*;
     
    public class Main {
     
    	public static void main(String[] args) {
    		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    		DocumentBuilder builder;
    		try 
    		{
    			builder 			= factory.newDocumentBuilder();
    			Document document 	= builder.parse("facture.xml");
    			NodeList elements 	= document.getElementsByTagName("client"); 
    			Element elementCl;
     
    			for ( int i=0; i<elements.getLength();i++)
    			{
    				elementCl 	= (Element)elements.item(i);
     
    				System.out.println("Client : "+ elementCl.getAttribute("nom"));
     
    				if ((elementCl.getAttribute("nom")).equalsIgnoreCase("achille")) {
     
    					System.out.println("parent : " + elementCl.getParentNode());
     
    					Node node = elementCl.getParentNode().removeChild(elementCl);
    					//System.out.println("node : " + node);
    					boolean result = elementCl.getAttribute("nom").equalsIgnoreCase("achille");
    					System.out.println("result = " + result);
     
    				}		
    				else
    				{
    					System.out.println("pas d'achille");
    				}
    				System.out.println("i =" + i);
    			}
     
    		} 
    		catch (ParserConfigurationException e) 
    		{
    			e.printStackTrace();
    		} 
    		catch (SAXException e) 
    		{
    			e.printStackTrace();
    		}
    		catch (IOException e) 
    		{	
    			e.printStackTrace();
    		}
    		//System.exit(0);
     
    	}
    }
    Résultat :
    ----------

    Le pgr Java trouve bien l'element contenant nom=achille mais la suppression ne marche pas. Rien ne se passe au niveau du fichier XML.

    Pourriez vous me donner quelques pistes ?

    Merci.[/code]

  2. #2
    Membre régulier
    Inscrit en
    Décembre 2004
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 63
    Points : 74
    Points
    74
    Par défaut
    c'est normal puisque la tu enleve le noeud de l'arbre en memoire, pour modifier le fichier tu doit reimprimer l'arbre DOM dans le fichier

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Pourrais tu m'en dire un peu plus stp, je suis un peu perdue !
    Merci.

  4. #4
    Membre régulier
    Inscrit en
    Décembre 2004
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 63
    Points : 74
    Points
    74
    Par défaut
    j'explique: quand DOM va parser ton document XML il va creer une arborescence chargé en mémoire, donc les modifications que tu effectura seront sur l'arbre et pas sur le fichier xml, et pour voir ces modifications sur ton fichier tu doit imprimer l'arbre modifier en memoire dans le fichier, je sais pas quelle parseur tu utilise mais si c'est XERCES ta une class Writer qui imprime l'arbre en memoire.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci guemairm, grâce à toi, j'ai pû quitter le boulot hier soir le coeur leger !
    Si par hasard l'un d'entre vous a la possibilité de jeter un oeil sur mon code et de le critiquer, ça serait parfait. Comme je débute, j'ai l'impression de faire pas mal de bricolage et je ne suis pas sûre d'être parfaitement rigoureuse !.
    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
    67
    68
    69
    70
    71
    72
     
    package com.cap.xml;
    import java.io.*;
     
    import org.w3c.dom.*;
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.xml.sax.*;
    import javax.xml.parsers.*;
    import java.io.*;
     
    import org.apache.crimson.tree.XmlDocument;
    import org.apache.crimson.tree.XmlWriteContext;
    import org.jdom.*;
    import org.jdom.input.*;
    import org.jdom.output.*;
    import java.util.List;
    import java.util.Iterator;
     
     
     
    public class TestDom2 {
     
    	public static void toModify() {
     
    		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    		DocumentBuilder builder;
     
    		try 
    		{
    			builder 			= factory.newDocumentBuilder();
    			FileInputStream fis = new FileInputStream(new File("C:\\TESTZIPZIP\\facture.xml"));
    			Document document 	= builder.parse(fis);
    			//Document document 	= builder.parse("C:\\TESTZIPZIP\\facture.xml");
    			NodeList elements 	= document.getElementsByTagName("client"); 
    			Element elementCl;
     
    			for ( int i=0; i<elements.getLength();i++)
    			{
    				elementCl 	= (Element)elements.item(i);
    				System.out.println("Client : "+ elementCl.getAttribute("nom"));
     
    				if ((elementCl.getAttribute("nom")).equalsIgnoreCase("achille")) 
    				{	
    					Node node = elementCl.getParentNode().removeChild(elementCl);			
    					// sur sortie standard
    					//((XmlDocument)document).write(System.out);
    					((XmlDocument)document).write( new FileOutputStream("C:\\TESTZIPZIP\\factureNew2.xml"));
    					break;					
    				}		
    				else
    				{
    					System.out.println("pas d'achille");
    				}
    				System.out.println("i =" + i);
    			}						
    		} 
    		catch (ParserConfigurationException e) 
    		{
    			e.printStackTrace();
    		} 
    		catch (SAXException e) 
    		{
    			e.printStackTrace();
    		}
    		catch (IOException e) 
    		{	
    			e.printStackTrace();
    		}
    		//System.exit(0);
    	}
    }
    Bonne journée.

Discussions similaires

  1. suppression d'un element grace a son id [xml] php5
    Par toomwayer dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 19/10/2007, 19h17
  2. [xerces 1_0_3] ajout et suppression d'un element d'un fichier xml
    Par noOneIsInnocent dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 17/09/2007, 23h24
  3. [JDOM] suppression d'element xml en java
    Par anti_gone10 dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 10/09/2007, 11h06
  4. Suppression de noeud en xml
    Par Qapoka dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 15/09/2005, 11h39
  5. Réponses: 2
    Dernier message: 07/01/2005, 20h40

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