Xml Supprimer un noeud

Signaler
Messages postés
1
Date d'inscription
dimanche 7 août 2005
Statut
Membre
Dernière intervention
16 mars 2007
-
Messages postés
17
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
1 juin 2013
-
Voila j'aimerai supprimer un noeud dans mon fichier xml


Fichier XML :




Users>
 
    Geogeo
 
 
    Alice
 


Mon code :


static void Main(string[] args)
        {
            XmlDocument Doc = new XmlDocument();
            Doc.Load("users.xml");


            XmlNode Root = Doc.DocumentElement;
            XmlNodeList Poup;
            XmlNode Bouh;


            Poup = Root.SelectNodes("/Users/User[Username='GeoGeo']");
            Bouh = Poup.Item(0);
            Bouh.RemoveAll();
         
          
            Doc.Save(Console.Out);
           
        }


Avec ce code j'arrive bien a supprimer GeoGeo mais il me reste


Comment faire pout tout enlever ?


Merci :)

5 réponses

Messages postés
2676
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
22
salut,

tu peux faire une truc dans le genre de bouh.parentNode.remove(poup)...je sais plus si c'est parentNode, parentElement, parent...

ShareVB
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Membre
Dernière intervention
20 juin 2013
58
Salut,
La requête XPath est correcte, mais la méthode RemoveAll permet de supprimer les éléments, attributes, et childNode d'un Node, pas le Node lui même.
Donc forcément, l'élément User reste.

Si tu ne connais pas spécialement bien XPath, tu peux jeter un oeil ici

<hr />
-Blog-
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Membre
Dernière intervention
20 juin 2013
58
Donc voici une solution rapidement faite (peut-être qu'on peut faire mieux ^^):
En tout cas elle marche...

XmlDocument xDoc =
new
XmlDocument();
xDoc.Load(
"test.xml");

XmlNode xNodeUser = xDoc.SelectSingleNode(
"Users/User[Username='GeoGeo']");

XmlNode xNodeUsers = xDoc.SelectSingleNode(
"Users");

if (xNodeUser !=
null && xNodeUsers !=
null) xNodeUsers.RemoveChild(xNodeUser);xDoc.Save(

"test.xml");

<hr />
-Blog-
Messages postés
2676
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
22
salut,

pas testé mais ca peut peut être aussi marché:
static void Main(string[] args)
        {
            XmlDocument Doc = new XmlDocument();
            Doc.Load("users.xml");

            XmlNode Root = Doc.DocumentElement;
            XmlNode Poup;

            Poup = Root.SelectSingleNode("/Users/User[Username='GeoGeo']");
            if (Poup != null && Poup.ParentNode != null) Poup.ParentNode.RemoveChild(Poup);
          
            Doc.Save(Console.Out);
           
        }

ShareVB
Messages postés
17
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
1 juin 2013

salut
je voudrai supprimer mais appartir d'un attribut du noeud
voici mon ficheir xml

<comptes>
<compte numcompte="23456568" type="Epargne" nom="MARIA" prenom="ABDOURAHMANE" tel="777421504">10000000</compte>
<compte numcompte="09875439" type="Epargne" nom="AAAAAAAA" prenom="dddd" tel="ttttt">111111</compte>
<compte numcompte="1234567" type="Epargne" nom="FFF" prenom="cffd" tel="k,kjkj">4444444</compte>
<compte numcompte="0987665" type="Epargne" nom="daba" prenom="trtrtrt" tel="trtrtrt">333333333333</compte>
</comptes>




c'est ce que j'ai fait mai sa ne passe pas


doc.Load(@"compte2.xml");

string path = string.Format("compte[@numcompte={0}]",0987665);

XmlNode compt = doc.FirstChild.SelectSingleNode(path);
doc.RemoveChild(compt);