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();
		}
}