Suppression de noeud XML [Résolu]

emachede 27 Messages postés jeudi 3 juillet 2003Date d'inscription 28 juin 2005 Dernière intervention - 19 juin 2005 à 15:17 - Dernière réponse : emachede 27 Messages postés jeudi 3 juillet 2003Date d'inscription 28 juin 2005 Dernière intervention
- 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
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
emachede 27 Messages postés jeudi 3 juillet 2003Date d'inscription 28 juin 2005 Dernière intervention - 21 juin 2005 à 11:11
3
Merci
ç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!

Merci emachede 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 123 internautes ce mois-ci

Commenter la réponse de emachede
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 19 juin 2005 à 15:58
0
Merci
Salut,

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

Cocoricoooooooo !!!!
coq
MVP Visual C#
Commenter la réponse de cs_coq
emachede 27 Messages postés jeudi 3 juillet 2003Date d'inscription 28 juin 2005 Dernière intervention - 19 juin 2005 à 18:25
0
Merci
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
Commenter la réponse de emachede
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 19 juin 2005 à 19:14
0
Merci
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#
Commenter la réponse de cs_coq
emachede 27 Messages postés jeudi 3 juillet 2003Date d'inscription 28 juin 2005 Dernière intervention - 19 juin 2005 à 20:52
0
Merci
il faut supprimer uniquement le noeud spécifié

a priori d'après ce que tu me dis, il supprime tjrs le meme!
Commenter la réponse de emachede
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 19 juin 2005 à 21:37
0
Merci
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#
Commenter la réponse de cs_coq
emachede 27 Messages postés jeudi 3 juillet 2003Date d'inscription 28 juin 2005 Dernière intervention - 20 juin 2005 à 11:41
0
Merci
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
Commenter la réponse de emachede
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 20 juin 2005 à 21:03
0
Merci
C'est justement avec ce noeud là que j'avais tester...

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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.