Rechercher : dans
Par :

Naviguer fichier xml avec c#

Dernière réponse le 15 fév 2008 à 09:29:30 melar, le 14 fév 2008 à 10:20:29 
 Signaler ce message aux modérateurs

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.

Configuration: Windows XP
Firefox 2.0.0.12

1

ppmax, le 14 fév 2008 à 10:30:21

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);

Plop !

Répondre à ppmax

2

melar, le 14 fév 2008 à 10:59:51

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.

Répondre à melar

3

ppmax, le 14 fév 2008 à 11:31:21
  • +2

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);
}
Plop !

Répondre à ppmax

4

melar, le 14 fév 2008 à 12:36:00

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.

Répondre à melar

5

ppmax, le 14 fév 2008 à 13:27:06
  • +2

Et bien tes noeuds tu les as avec
XmlNodeList lstIndex = xmlIndex.GetElementsByTagName("NOEUD");
///parcours:
foreach(XmlNode noeud In XmlNodeList )
{
if...


}
Plop !

Répondre à ppmax

6

 melar, le 15 fév 2008 à 09:29:30

Merci, ton code marche à la perfection. Je comprends vraiment pas comment j'ai pu passer à côté de ça.

Répondre à melar