Naviguer fichier xml avec c#

Résolu/Fermé
melar Messages postés 89 Date d'inscription jeudi 22 juin 2006 Statut Membre Dernière intervention 23 novembre 2008 - 14 févr. 2008 à 10:20
melar Messages postés 89 Date d'inscription jeudi 22 juin 2006 Statut Membre Dernière intervention 23 novembre 2008 - 15 févr. 2008 à 09:29
Bonjour,
j'essaie de pouvoir insérer des données dans un fichier xml mais à l'endroit où je le désire.
Cependant, ça ne fonctionne pas.
Voici mon code:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(@"c:\fichiertype.xml");

XmlElement elmtEnfant = xmlDoc.CreateElement("ElementEnfant");
elmtEnfant.InnerText = "Valeur";

xmlDoc.InsertAfter(elmtEnfant,xmlDoc.SelectSingleNode("/compilation/mp3/titre").NextSibling);

Donc ce code est censé inséré un noeud <ElementEnfant>Valeur</ElementEnfant> après le noeud <titre>
Seulement, j'ai une erreur: "Le noeud de référence n'est pas un enfant de ce noeud".

Pourquoi cet erreur ?
Si vous avez d'autres propositions pour naviguer dans un fichier xml (mettre les données où l'ont veut, merci de me le faire savoir.
A voir également:

6 réponses

ppmax Messages postés 312 Date d'inscription mercredi 28 avril 2004 Statut Membre Dernière intervention 17 juillet 2008 244
14 févr. 2008 à 13:27
et bien tes noeuds tu les as avec
XmlNodeList lstIndex = xmlIndex.GetElementsByTagName("NOEUD");
///parcours:
foreach(XmlNode noeud In XmlNodeList )
{
if...


}
7
ppmax Messages postés 312 Date d'inscription mercredi 28 avril 2004 Statut Membre Dernière intervention 17 juillet 2008 244
14 févr. 2008 à 11:31
euh pourquoi je peux pas en récupérer la valeur, j'ai tout ce qu'il me faut :
if (noeud.Name == "NOEUD" && noeud.Attributes["NAME"].Value == "nomdemonnoeud")
{
noeud.AppendChild(nouveaunoeud);
}
6
ppmax Messages postés 312 Date d'inscription mercredi 28 avril 2004 Statut Membre Dernière intervention 17 juillet 2008 244
14 févr. 2008 à 10:30
salut, je ne fais pas comme ça pour naviguer dans mon fichier xml
je cherche d'abord les noeuds pouvant correspondre avec :
XmlNodeList lstIndex = xmlIndex.GetElementsByTagName("NOEUD");
ensuite je test les noeuds qu'il m'a renvoyer
et si c'est le bon, je fais un
noeud.AppendChild(nouveaunoeud);
0
melar Messages postés 89 Date d'inscription jeudi 22 juin 2006 Statut Membre Dernière intervention 23 novembre 2008 27
14 févr. 2008 à 10:59
Euh...je capte pas trop.
Comment fais tu référence au noeud que tu as recherché lorsque tu ajoutes ?
Comment fait tu le test étant donné que tu ne peux pas en récupérer la valeur ?

Un autre truc qui m'a soulé, c'est que j'arrive a récupérer le nom des noeuds, mais jamais leur valeur.
0

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

Posez votre question
melar Messages postés 89 Date d'inscription jeudi 22 juin 2006 Statut Membre Dernière intervention 23 novembre 2008 27
14 févr. 2008 à 12:36
Nan mais t'es bien d'accord avec moi que pour faire ton "if", il faut d'abord pouvoir parcourir tout les noeuds ?
C'est ça que je cherche.
0
melar Messages postés 89 Date d'inscription jeudi 22 juin 2006 Statut Membre Dernière intervention 23 novembre 2008 27
15 févr. 2008 à 09:29
Merci, ton code marche à la perfection. Je comprends vraiment pas comment j'ai pu passer à côté de ça.
0