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 :

Je n'arrive pas à supprimer un noeud


Sujet :

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

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 265
    Points : 149
    Points
    149
    Par défaut Je n'arrive pas à supprimer un noeud
    Bonjour,

    J'ai créé un fichier xml. J'arrive sans aucun problème à ajouter ou modifier un noeud, mais je n'arrive pas à en supprimer un.
    J'ai donc créé le code de Test suivant et un petit fichier pour faire différents essais mais sans succès.
    Pouvez-vous me dire où est mon erreur.

    Merci d'avance

    Gégé

    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
     
     
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <Agenda>
    <Personne>
         <Reference>138</Reference>
         <Nom>Martinelli</Nom>
         <Prenom>Aristide</Prenom>
    </Personne>
    <Personne>
         <Reference>139</Reference>
         <Nom>Dupont</Nom>
         <Prenom>Georges</Prenom>
    </Personne>
    <Personne>
         <Reference>140</Reference>
         <Nom>Martinelli</Nom>
         <Prenom>Aristide</Prenom>
    </Personne>
    </Agenda>
    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
     
    import javax.xml.parsers.DocumentBuilderFactory;
    import org.w3c.dom.Element;
    import org.w3c.dom.Node;
    import java.io.File;
    import org.w3c.dom.Document;
    import org.w3c.dom.traversal.DocumentTraversal;
    import org.w3c.dom.traversal.NodeFilter;
    import org.w3c.dom.traversal.NodeIterator;
     
    public class Test 
    {
    	static String fileName = "Test.xml";
    	protected static File fichier = null;
    	public Test()
    	{
    		System.out.println(supprimer("139"));
    	}
     
    	 protected static String supprimer(String  myRef)
    		{
    				try
    				{
    					fichier = new File(fileName);
    					if (!fichier.exists()){ System.out.println("fichier inconnu") ;   System.exit(8);}
    					DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    					Document doc = factory.newDocumentBuilder().parse( fichier) ;
    					DocumentTraversal traversal = (DocumentTraversal) doc;
    					Node root = doc.getDocumentElement();
    					NodeIterator iterator = traversal.createNodeIterator(root, NodeFilter.SHOW_ELEMENT, null, true);
    					Element personne = null;
    					for (Node n = iterator.nextNode(); n != null; n = iterator.nextNode()) 
    					{
    					    Element element = (Element) n;
    					    if ("Personne".equals(element.getTagName())) personne = element;
    					    else 
    					    	if ("Reference".equals(element.getTagName()) && myRef.equals(element.getTextContent()) && personne != null) 
    					    	{
    					    		 System.out.println( element.getTagName() +  "  --> " + element.getTextContent());
    					    		 root.removeChild(personne);
    					         	return "Noeud supprimé ";
    					    	}
    					}
    					return "Noeud non trouvé";
    				}  
    				 catch (Exception ex) {System.out.println(ex.toString()); return "Erreur de suppression" ;}  // erreur
     
    		}
    	 public static void main(String[] args) 
    		{
    			new Test();
    		}
    }

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Tu obtiens quoi comme sortie avec ton code?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 265
    Points : 149
    Points
    149
    Par défaut
    Je n'obtiens rien (simplement le message Noeud supprimé "). Le Node "Personne" avec un numéro de référence 139 que je veux supprimer est toujours présent dans le fichier xml. Depuis, j'ai essayé de changer légèrement le code, mais également sans succès ( voir ci-dessous).

    Merci beaucoup pour ta réponse. SI tu as des idées n'hésite pas à m'en faire part.
    Bon dimanche

    Gégé

    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 javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import org.w3c.dom.Element;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
    import java.io.File;
    import org.w3c.dom.Document;
     
    public class Test {
    	static String fileName = "Test.xml";
    	protected static File fichier = null;
     
    	public Test() {
    		System.out.println(supprimer("139"));
    	}
     
    	protected static String supprimer(String myRef) {
    		try 
    		{
    			fichier = new File(fileName);
    			if (!fichier.exists()) 
    			{
    				System.out.println("fichier inconnu");
    				System.exit(8);
    			}
    			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    			DocumentBuilder builder = factory.newDocumentBuilder();
    			Document document = builder.parse(fichier);
    			document.getDocumentElement().normalize();
    			Node racine = document.getDocumentElement();
    			NodeList racineNoeuds = racine.getChildNodes();
    			int nbRacineNoeuds = racineNoeuds.getLength();
    			for (int i = 0; i < nbRacineNoeuds; i++) 
    			{
    				if (racineNoeuds.item(i).getNodeType() == Node.ELEMENT_NODE) 
    				{
    					final Element personne = (Element) racineNoeuds.item(i);
    					Element elem = (Element) personne.getElementsByTagName("Reference").item(0);
    					if (elem == null) continue;
    					String valeur = elem.getTextContent().trim();
     
    					if (!valeur.equals(myRef)) 	continue;
    					racine.removeChild(personne);
    					return "Noeud supprimé ";
    				}
    			}
    			return "Noeud non trouvé";
    		} 
    		catch (Exception ex) {System.out.println(ex.toString());
    		return "Erreur de suppression";
    		} 
    	}
    	public static void main(String[] args) {new Test();}
    }

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 265
    Points : 149
    Points
    149
    Par défaut
    J'ai compris, et maintenant cela marche. Il fallait simplement que j'ajoute comme d'habitude (je mérite un coup de pied quelque part... !!) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     	TransformerFactory transformerFactory = TransformerFactory.newInstance();
             Transformer transformer = transformerFactory.newTransformer();
             DOMSource source = new DOMSource(document);
             StreamResult result = new StreamResult(fichier);
             transformer.transform(source, result);
    Merci encore pour ta réponse

    Gégé

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

Discussions similaires

  1. Je n'arrive pas à supprimer une Table créée par VBA
    Par ac264 dans le forum VBA Access
    Réponses: 2
    Dernier message: 01/02/2010, 10h55
  2. Spams Orange que j'arrive pas à supprimer
    Par Telemak dans le forum Sécurité
    Réponses: 2
    Dernier message: 25/10/2009, 18h41
  3. [Fichier - LDB] N'arrive pas à supprimer.
    Par GarsDuCalvados dans le forum Access
    Réponses: 5
    Dernier message: 27/08/2009, 13h03
  4. Réponses: 4
    Dernier message: 28/05/2009, 10h16
  5. Je n'arrive pas à supprimer avec un DataSet
    Par tssi555 dans le forum VB.NET
    Réponses: 2
    Dernier message: 25/08/2008, 13h05

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