Suppression de noeud XML

Résolu
emachede Messages postés 27 Date d'inscription jeudi 3 juillet 2003 Statut Membre Dernière intervention 28 juin 2005 - 19 juin 2005 à 15:17
emachede Messages postés 27 Date d'inscription jeudi 3 juillet 2003 Statut Membre Dernière intervention 28 juin 2005 - 21 juin 2005 à 11:11
bonjour,



je veux supprimer un noeud bien précis dans mon xml

j'utilise la commande:

objRoot.RemoveChild(monNoeud);

avec objRoot = objXmlDoc.DocumentElement;

et monNoeud le noeud à supprimer



j'ai vérifier au déboguage, les deux noeuds (racine et à supprimer) sont les bons

le probleme: tous les noeuds fils du noeud racine sont supprimés, sans distinctions.


comment y remédier? merci

9 réponses

emachede Messages postés 27 Date d'inscription jeudi 3 juillet 2003 Statut Membre Dernière intervention 28 juin 2005
21 juin 2005 à 11:11
ça y est j'ai trouvé

j'ai fait un mix de ton code et du mien. rien de tel ! ;-)



XmlNode node = objXmlDoc.DocumentElement.SelectSingleNode("Intercontrat1");

objRoot.RemoveChild(node);

objXmlDoc.Save(strXmlPath);



avec objRoot = objXmlDoc.DocumentElement; et objXmlDoc= new XmlDocument();



voilou

merci de ton aide coq!
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
19 juin 2005 à 15:58
Salut,

Tu pourrais montrer le bout de code qui effectue la suppression ainsi que du xml utilisé ?

Cocoricoooooooo !!!!
coq
MVP Visual C#
emachede Messages postés 27 Date d'inscription jeudi 3 juillet 2003 Statut Membre Dernière intervention 28 juin 2005
19 juin 2005 à 18:25
voici le xml:

<?xml version="1.0" encoding="utf-8"?>

<data>

<restants>

12

<taxe>25.3</taxe>

<notes>annotations....</notes>

</restants>



<debut>09/08/2005 00:00:00</debut>

<fin>26/08/2005 00:00:00</fin>



</data>



public void SupprimerNoeud(string nomNoeudCible)

{

//on recupere le 1er noeud fils du noeud racine du xml

XmlNode noeudEnfant = InitialiserXml();



if(objRoot.ChildNodes.Count!=0)

{

//futur noeud sélectionné

XmlNode monNoeud = noeudEnfant;




//Parcourt l'ensemble des noeuds jusqu'à trouver le
bon

foreach (XmlNode monN in noeudEnfant.ChildNodes)

{



if(monN.Name.Equals(nomNoeudCible))

monNoeud = monN;

}



// Suppression du noeud

objRoot.RemoveChild(monNoeud);

// Sauvegarde du document

objXmlDoc.Save(strXmlPath);

}



}


voilou les codes

merci de ton aide
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
19 juin 2005 à 19:14
Hum
Tu veux faire quoi au juste ?
J'ai essayer ton code : quand on lui demande de supprimer le noeud "restants" c'est bon, par contre si on lui demande de supprimer le noeud "Intercontrat" il supprime le noeud "restants" et laisse "Intercontrat".

Cocoricoooooooo !!!!
coq
MVP Visual C#

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
emachede Messages postés 27 Date d'inscription jeudi 3 juillet 2003 Statut Membre Dernière intervention 28 juin 2005
19 juin 2005 à 20:52
il faut supprimer uniquement le noeud spécifié

a priori d'après ce que tu me dis, il supprime tjrs le meme!
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
19 juin 2005 à 21:37
Oui, déjà là tu as un problème.

Sinon si ton fichier à toujours la même structure et que tu dois supprimer des éléments enfants de data une solution de ce genre peut faire l'affaire :

// création de l'expression
StringBuilder xPath = new StringBuilder();
xPath.AppendFormat("/data/{0}", nomNoeudCible);
// récupération du noeud
XmlNode node = m_xmlDoc.DocumentElement.SelectSingleNode(xPath.ToString());
// suppression
node.ParentNode.RemoveChild(node);

A confirmer par un habitué du xml :-)

Cocoricoooooooo !!!!
coq
MVP Visual C#
emachede Messages postés 27 Date d'inscription jeudi 3 juillet 2003 Statut Membre Dernière intervention 28 juin 2005
20 juin 2005 à 11:41
le node prend une valeur non définie lors du SelectSingleNode()

alors que le xpath est juste!

il ne trouve donc pas le noeud Intercontrat alors que dans le xml il est bien présent
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
20 juin 2005 à 21:03
C'est justement avec ce noeud là que j'avais tester...

Cocoricoooooooo !!!!
coq
MVP Visual C#
emachede Messages postés 27 Date d'inscription jeudi 3 juillet 2003 Statut Membre Dernière intervention 28 juin 2005
21 juin 2005 à 10:31
et ça marche chez toi, ou ça vient de chez moi?
Rejoignez-nous