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