[c#/xml] Trouver un noeud avec un attribut particulier : Est-ce possible avec Se

Résolu
cs_Likilik
Messages postés
9
Date d'inscription
jeudi 2 décembre 2004
Statut
Membre
Dernière intervention
24 avril 2006
- 20 mars 2006 à 18:24
cs_Likilik
Messages postés
9
Date d'inscription
jeudi 2 décembre 2004
Statut
Membre
Dernière intervention
24 avril 2006
- 20 mars 2006 à 22:55
Bonjour,



J'ai un fichier xml dont voici un extrait :



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

<root>

<mp3 id="1" name="toto.mp3">

<taille>xxxx</taille>

<debut>0</debut>

<fin>yyyy</fin>

</mp3>

<mp3 id="2" name="titi.mp3">


<taille>zzzz</taille>


<debut>yyyy</debut>


<fin>vvvv</fin>


</mp3>

.....

.....

</root>


J'utilise SelectSingleNode pour trouver un noeud.

Comment utiliser par exemple pour récupérer directement avec un ou plusieurs attributs ?

Par exemple si je veux trouver le noeud pour lequel name="titi.mp3" je
fais comment ? puis-je utiliser une variable à la place de titi.mp3
dans ma requete ?



Je suis "nouveau" en c# et xml et je lis pas mal de vos réponses. Si
j'ai raté ce sujet et qu'il a déja été traité, prière de m'excuser.



Merci.




-.- DotMatrix -.- Likilik -.-

7 réponses

cs_coq
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
2 août 2014
98
20 mars 2006 à 18:33
Salut,

Oui, avec une requête XPath de ce genre :
"//mp3[@name='titi.mp3']"

/*
coq
MVP Visual C#
*/
3
cs_Likilik
Messages postés
9
Date d'inscription
jeudi 2 décembre 2004
Statut
Membre
Dernière intervention
24 avril 2006

20 mars 2006 à 18:44
Merci.

Ca me permet d'avancer....
Pour la variable j'ai aussi trouvé ma ligne est (si ca interesse) :


XmlNode mp3 = xmlDoc.SelectSingleNode("//mp3[@name='" + file + "']"); // file est le nom de la variable qui contient le fichier recherche

Encore merci !

-.- DotMatrix -.- Likilik -.-
3
cs_coq
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
2 août 2014
98
20 mars 2006 à 18:50
La concaténation c'est moche ;-)

string xpath = string.Format("//mp3[@name='{0}']", file);
XmlNode mp3 = xmlDoc.SelectSingleNode(xpath);

ou direct

XmlNode mp3 = xmlDoc.SelectSingleNode(string.Format("//mp3[@name='{0}']", file));

/*
coq
MVP Visual C#
*/
3
cs_coq
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
2 août 2014
98
20 mars 2006 à 22:21
string xpath = string.Format("//mp3[@name= " {0}"]", file);
XmlNode mp3 = xmlDoc.SelectSingleNode(xpath);

:-)

/*
coq
MVP Visual C#
*/
3

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

Posez votre question
cs_Likilik
Messages postés
9
Date d'inscription
jeudi 2 décembre 2004
Statut
Membre
Dernière intervention
24 avril 2006

20 mars 2006 à 19:44
En effet merci bien...

au fait je rencontre un petit souci c'est que mes fichier mp3 ont des fois des noms contenant des quotes...
Une idée ?

Merci
;-)

-.- DotMatrix -.- Likilik -.-
0
cs_Likilik
Messages postés
9
Date d'inscription
jeudi 2 décembre 2004
Statut
Membre
Dernière intervention
24 avril 2006

20 mars 2006 à 22:54
C'est génial !
Merci de ton aide

-.- DotMatrix -.- Likilik -.-
0
cs_Likilik
Messages postés
9
Date d'inscription
jeudi 2 décembre 2004
Statut
Membre
Dernière intervention
24 avril 2006

20 mars 2006 à 22:55
C'est génial !
Merci de ton aide

Bravo a csharp et a ce moyen d'entraide !!!

A bientot !

-.- DotMatrix -.- Likilik -.-
0