Xpath amateur ?

micbristol Messages postés 36 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 24 février 2013 - 11 sept. 2009 à 14:29
micbristol Messages postés 36 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 24 février 2013 - 14 sept. 2009 à 09:59
Salut !
Un message de desespere, je savais que j'etais pas tres fort mais la je m'avoue completement nul !
Ca fait 6 heures que je cherche sur le net un exemple SIMPLE de Xpath (enfin je pense que ca doit etre simple!)

Tous ce que je veux faire ,
une method pour trouver la valeur d'un attribut
une method pour pourvoir remplacer la valeur d'un attribut

les exemples que j'ai trouvé permettent de lister tous les attributs dans un treeview, ou creer les attributs avec un nouveau noeud, ou utilise MoveNext(), etc
mon fichier XML est du genre (desole pour la syntax je le fais manuellement)

<Datas>
<Datas1>
<Datas11>
<Datas111>
<Datas112>
<Datas1121> Attr1121 "XXX" Attr1122 "YYY" </Datas1121>
<Datas2>
<Datas21>
<Datas211> Attr2111 "ZZZ" Attr2112 "AAA" </Datas211>
<Datas3>
<Datas31>

si qq un peut CLAIREMENT (n'ayaez pas peur de detailler et commenter) comment avec Xpath
_lire Attr1122 = "YYY"
_Changer la valeur de Attr2112

en evitant de passer par MoveNext() car mon vrai xml contient bien plus d'attributs, je veux pouvoir acceder direct en indiquant le nom de l'attribut
de meme pour changer la valeur.

en supposant que le chemin de mon xml soit XMLPath

J'apprends le C# tous seul donc je fais face a pas mal d'incomprenhension quand au language object, donc si vous avez des liens tres explicites et faciles je suis preneur...

merci a tous

6 réponses

cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
11 sept. 2009 à 15:12
Salut,
Tu peux jeter un oeil sur ce tutorial:
http://www.csharpfr.com/tutorial.aspx?ID=536


[hr]
-Blog-
-Site Perso-
0
micbristol Messages postés 36 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 24 février 2013
11 sept. 2009 à 16:07
Salut Bidou
ton tuto est tres bien fait, et il m'aide beaucoup
par contre je ne parvient toujours pas a acceder a la valeur d'un attribut sachant le nom de mon attribut
ex avec le xml ci dessus


si je veux qu'on me retourne XXX
mon xPathExp serait "Datas/Datas/Datas11/Datas112/Datas1121@Attr1121"
mais j'ai une erreur "Invalid Token"
probleme de syntax ?

Gros merci
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
11 sept. 2009 à 16:12
Relis le tutorial...
Les attributs sont accédés avec les crochets "[ ]"


[hr]
-Blog-
-Site Perso-
0
micbristol Messages postés 36 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 24 février 2013
11 sept. 2009 à 18:57
hello
bien desole mais je bute
au moins ca montre que le tuto n'est pas fait pour les debutants

pourrais tu me corriger ou dois -je abandonner

string xPathExp = "Datas/Datas/Datas11/Datas112/Datas1121[Attr1121]";
XmlNodeList xNodes = xDoc.SelectNodes(xPathExp);
string Result = xNodes.ToString();

merci et desole
0

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

Posez votre question
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
12 sept. 2009 à 16:12
Salut,

La méthode SelectNodes retourne une liste (avec un seul élément si un seul resultat), pas directement une seule instance de XmlNode, et encore moins directement la valeur.
Voir aussi la méthode SelectSingleNode.


/*
coq
MVP Visual C#
CoqBlog
*/
0
micbristol Messages postés 36 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 24 février 2013
14 sept. 2009 à 09:59
Salut Coq
J'arrive a lire mes attributs, mais pas a ecrires ou remplacer leurs valeurs
pour lire je fais

XmlDocument document = new XmlDocument();
document.Load(Datapath);
XmlNodeList elements = document.SelectNodes("Datas/Datas/Datas11/Datas112/Datas1121");
foreach (XmlElement element in elements)
{
string Result = element.GetAttribute("Attr1121");
}


mais toujours a la recherche d'une solution pour remplacer ou ecrire dans Attr1121

merci
0
Rejoignez-nous