|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : Lire un fichier XML [ Base de données / XML ] (snakzbenjy)
Informations & options pour cette discussion
|
mardi 8 avril 2008 à 14:47:15 |
Lire un fichier XML

snakzbenjy
|
Bonjour à tous, Alors voilà j'ai un fichier XML de ce type la: <?xml version="1.0" ?> <Value>Donnée combo 1</Value> <Value>Donnée combo 2</Value> <Value>Donnée combo 3</Value> </Values> </Control> <Value>Donnée liste 1</Value> <Value>Donnée liste 2</Value> <Value>Donnée liste 3</Value> </Values> </Control> </Controls> </root>
Je cherche à récupérer dans une listbox ses informations.
exemple: ComboBox1 Donnée combo 1 Donnée combo 2 Donnée combo 3 ListBox1 Donnée liste 1 Donnée liste 2 Donnée liste 3
Voilà mon code: privateint ReadXml(){ XmlDocument doc = newXmlDocument(); doc.Load("exemple.xml"); XmlNodeList xNod = doc.SelectNodes("//Controls"); foreach (object title in xNod) { XmlNodeList xNode = doc.SelectNodes("//Control"); foreach (XmlNode titlee in xNode) { XmlNode xNodess = doc.SelectSingleNode("//Name"); string aa = xNodess.InnerText; XmlNodeList xNodee = doc.SelectNodes("//Value"); foreach (XmlNode titleee in xNodee) { XmlNode xNodeess = doc.SelectSingleNode("//Value"); string aaa = xNodeess.InnerText; } } } return 1;}
Donc enfaite je souhaite avoir dans ma variable "aa" le nom et dans ma variable "aaa" la valeur. mais le problème c'est que en faite dans ma variable "aaa" il me nomme a la suite:
Donnée combo 1 Donnée combo 2 Donnée combo 3 Donnée liste 1 Donnée liste 2 Donnée liste 3
C a d il ne tien pas compte des noeuds. Comment avoir que les valeurs du noeud du combobox
Merci à tous
benjy
|
|
|
|
mardi 8 avril 2008 à 15:12:40 |
Re : Lire un fichier XML

billou_13
|
Salut,
Il ne faut pas faire:
doc.SelectNodes("//Value");
Car ceci va te donner tous les noeuds "Value" de ton document XML.
Le principe consiste à jour avec ta ligne :
XmlNodeList xNod = doc.SelectNodes("//Controls");
La liste te retourne tous les controls que tu souhaites.
Ensuite, tu peux prendre les valeurs souhaitées en faisant:
XmlNodeList xNodee = xNod.SelectNodes("/Values/Value");//Tu travailles avec ton noeud control uniquement
Voila le principe. Il ne faut pas jouer qu'avec le XmlDocument "doc". Il faut parcourir en profondeur :
1) Sélection de tous les controles
2) Sélection des valeurs de chaque noeud control
Bonne journée,
Billou_13
|
|
|
|
mardi 8 avril 2008 à 15:39:25 |
Re : Lire un fichier XML

snakzbenjy
|
Merci, Je comprend le principe. Le compilateur me dit que "XmlNodeList" le contient pas de définition pour "SelectNodes": Imposible de faire: XmlNodeList xNodee = xNod.SelectNodes("/Values/Value");  Tu sais pourquoi? Merci. Benjy
|
|
|
|
mardi 8 avril 2008 à 16:04:18 |
Re : Lire un fichier XML

billou_13
|
Oui pardon c'est exact ! Autant pour moi (faute d'inattention) !
Tu ne peux sélectionner un XPath pour une liste de noeud car il ne sera pas sur quel noeud recherché ^^.
Il faut faire:
XmlNodeList xNod = doc.SelectNodes("//Controls");
foreach (XmlNode curNode in xNod)
{
//... Ton code
XmlNodeList xNodee = curNode.SelectNodes("/Values/Value");//Sur le noeud parcouru
}
Et en plus, c'est plus pratique (et spécifique) que :
foreach (object title in xNod)
Bon courage,
Billou_13
|
|
|
|
mardi 8 avril 2008 à 16:15:45 |
Re : Lire un fichier XML

billou_13
|
Décidement, je suis abonné aux petites fautes. Je te propose donc refaire le parcours complet du code ^^. Tu m'en voudras pas j'espère :
privateint ReadXml()
{
XmlDocument doc = newXmlDocument();
doc.Load("exemple.xml");
//Récupération de tous les noeuds 'Controls'
XmlNodeList controlsNodes = doc.SelectNodes("//Controls");
foreach (XmlNode curControls in controlsNodes)
{
//Récupération de tous les noeuds 'Control'
XmlNodeList controlNodes = curControls.SelectNodes("//Control");
foreach (XmlNode curControl in controlNodes)
{
//Récupération du noeud 'Name'
XmlNode curName = curControl.SelectSingleNode("/Name");
string name = curName.InnerText;
//Récupération de tous les noeuds 'Value'
XmlNodeList valueNodes = curControl.SelectNodes("/Values/Value");
foreach (XmlNode curValue in valueNodes)
{
string value = curValue.InnerText;
}
}
}
return 1;
}
|
|
|
|
mardi 8 avril 2008 à 16:47:16 |
Re : Lire un fichier XML

snakzbenjy
|
Non je ne t'en veux pas ^^
Je ne sais pas si tu l'as testé mais il ne récupére pas le noeud "Name".
//Récupération du noeud 'Name' XmlNode curName = curControl.SelectSingleNode("/Name"); string name = curName.InnerText;
Quand je débug il n'y a rien dans curName.
Dans le chemin il y a qu'un seul slach? ("//Name"); ou ("Name"); ??
merci
Benjy
|
|
|
|
mardi 8 avril 2008 à 16:49:45 |
Re : Lire un fichier XML

snakzbenjy
|
Je répond à ma question tout seul!
ce n'est pas ("//Name");
Sinon il reprend le chemin complet.
Pourquoi ca ne marche pas sinon?
Il compile aucune erreur mais il n'y a rien dans curName
|
|
|
|
mardi 8 avril 2008 à 17:05:13 |
Re : Lire un fichier XML

billou_13
|
Réponse acceptée !
Bon, c'est la dernière cette fois-ci ^^
remplace les lignes suivantes:
XmlNodeList controlNodes = curControls.SelectNodes("//Control");
XmlNode curName = curControl.SelectSingleNode("/Name");
XmlNodeList valueNodes = curControl.SelectNodes("/Values/Value");
Par
XmlNodeList controlNodes = curControls.SelectNodes("./Control");
XmlNode curName = curControl.SelectSingleNode("./Name");
XmlNodeList valueNodes = curControl.SelectNodes("./Values/Value");
J'avais oublié le point. Ca faisait un bout de temps que j'avais pas touché au XML. Mais cette fois ci, j'ai testé !
Bonne soirée,
Billou_13
|
|
|
|
mardi 8 avril 2008 à 17:12:08 |
Re : Lire un fichier XML

snakzbenjy
|
wouuuuuu c'est magique.
merci billou..
Désoler de t'avoir fait replongé dedans ^^
Benjy
|
|
|
|
mardi 8 avril 2008 à 17:17:35 |
Re : Lire un fichier XML

billou_13
|
Pour être plus clair et synthétique sur les différentes valeur XPath (dans XmlNode.SelectNodes(xpath); :
1) //node indique que tu cherches les noeuds "node" quelque que soit la hiérarchie de profondeur.
2) ./node indique que tu cherches les noeuds fils "node" uniquement (n-1 en gros)
./ est donc plus adapté que // dans ton cas.
Et tu peux faire bien plus et beaucoup plus puissant. Je te conseilles pour cela fortement de regarder le tutorial très bien fait de Bidou:
http://www.csharpfr.com/tutorial.aspx?id=536
Bonne soirée,
Billou_13
|
|
|
Cette discussion est classé dans : donnée, liste, doc, combo, value
Répondre à ce message
Sujets en rapport avec ce message
Liste de police dans un combo [ par sebastiencarrer ]
Comment creer un combobox qui m affiche la liste des polices disponibles?Seb
Attacher une liste a un combo [ par olibara ]
Bonjour,Je ne parviens pas a attacher une liste a un ComboBoxJe declare une listeclass Hotel{ int Id; int Nom;}List Hotels=new List();cmb.DataSourc
DataGridView et combobox [ par kaoutara_hajji ]
Bonjour tout le monde , ca fait une semaine que je bloque sur un probleme et j'arrive pas a le resoudre , et j'espere que vous puissiez m'aider, j'ai
Problème avec une dll [ par veler ]
Salut à tous, pour le logiciel que créer en VB.Net, j'utilise une dll dans lequel on trouve le code suivant. Cette dll permet d'enregistrer dans un xm
Récupérer la doc du code pendant l'exécution du programme [ par maitredede ]
Bonjour,Je voudrais savoir si pendant l'exécution de mon programme il est possible de récupérer la doc d'une méthode, celle qu'on ajoute dans le code
Dupliquer une base de donnée Oracle [ par benito16 ]
Bonjour,Je souhaiterai dupliquer une base de données Oracle afin de pouvoir travailler sur une base test sans modifier celle d'origine.Est-ce possible
liste des fichiers recents(comme word) [ par vboussema ]
salut; j'ai une application qui ouvre des fichiers et je veut à chaque foi que j'ouvre mon application que je trouve les fichiers récents(la liste fes
AsyncCallBack, Délégué et Galere ! [ par PORTE_BLINDEE ]
Voila jeffectue une requete web asynchrone et je souhaite traiter le code HTML ressu, le parser et afficher les resultats dans une liste viewvoici le
Vidéo en XAML / C# [ par CrazyJoe1 ]
Bonjour à tous,Je suis en train de concevoir un programme avec une interface XAML qui doit affichier une liste de vidéo issue d'un fichier RSS (celui
BindingListView : déclancher le filtrage dans un thread [ par mathmax ]
Bonjour, quelqu'un m'avais conseillé cette très bonne implémentation d'une BindingListView. J'aimerais cependant déclencher le filtrage dans un Thread
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|