ParserXML/Acceder à un noeud précis [Résolu]

Signaler
Messages postés
17
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
3 septembre 2008
-
Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
-
Bonjour,

J'ai un problème au niveau de l'accés à un noeud de mon fichier XML...
En effet, mon fichier se structure de la facon suivante : 

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



-


<


nvd nvd_xml_version


="


1.2


"


pub_date


="


2008-07-10


">


<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>









-






<


entry modified


="



2008-06-11



"


  published


="



2008-01-15



"


seq


="



2008-0001



"


severity


="



Low



">









-

<


desc


>





 


<


descript source


="

cve

">


Probleme au niveau d'accés. Problème de decryptage. Problème d'assemblage .

</


descript


>





 


</


desc


>





 


</


entry


>








Je voudrais acceder au contenu du noeud descript source (c'est-à-dire recuperer la valeur "Probleme au niveau d'accés. Problème de ....").




J'ai dèjà parser la premiere partie de mon document ( à savoir toutes les valeurs des attributs du noeud entry) mais là je n'y arrive pas (alors qu'il suffirait de faire la même chose vous me direz !!!) et ce n'est pas le même chose pour des raisons que j'ai identifié mais je ne sais pas si ceux sont de bonnes raisons : 


         - Le noeud entry correspond au premier noeud enfant du noeud de la racine : j'utilise les fonctions suivantes 




                         XmlDocument dom = new XmlDocument();




                        dom.Load(MapPath("./nvdcve-2008.xml"));


                        XmlNode NoeudParent = dom.DocumentElement;


                        XmlNode noeud = NoeudParent.FirstChild;


 




      - Je parse le document pour acceder à la valeur de mon noeud et non aux attributs de mon noeud via : 


               


Response.Write(noeud.Attributes["name"].InnerText);








Voila le problème que j'ai -> juste acceder aux informations contenu dans le noeud precis que je veux parser.




Comme je suis novice en programmation C# (et autres), je passe par ce forum qui m'a déjà aider aujourd'hui.




MERCI D'AVANCE




 

4 réponses

Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
25
Bonjour,

Pour ce faire, je te laisses jeter un oeil sur les XPath très bien expliqués par Bidou:
http://www.csharpfr.com/tutorial.aspx?ID=536
Tu devrais alors facilement accéder à ton noeud et son text par la même façon.

Bonne journée,


Billou_13
Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
25
En m'intéressant plus au tutorial proposé par Bidou, je suis tombé (d'url en url) à un logiciel qui pourrait t'intéressé: XPathBuilder proposé par le blog de Cyril Durand. Je pense que ca vaut vraiment le coup de jeter un coup d'oeil:
http://blogs.developpeur.org/cyril/archive/2006/05/03/XPathBuilder-construiser-facilement-vos-requet-XPath.aspx

Billou_13
Messages postés
17
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
3 septembre 2008

Merci pour ta réponse,

finalement j 'ai reussi à trouve la bonne methode pour acceder à un noeud directement alors que c'etait tout bète !!!! -> Il fallait juste utiliser ChildNodes qui est un tableau où sont stockés la liste des noeud fils du noeud sur lequel on se trouve (en general le noeud parent)...

Pour ton idée, Merci quand même...
Mais l'utilisation de XPath -> j'aime pas trop !!!

P.S. : je marque reponse acceptée vu que c'est une autre soolution possible à mon problème
Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
25
Je t'en tiendrais pas rigueur...
Moi aussi, j'avoue que j'ai du mal à utiliser le XPath lorsque celui-ci dépasse la simple sélection d'un noeud. Quand il faut faire des tests attributs ou autre, je préfère le programmer.

Mais c'est une très très mauvaise habitude et force est de constater qu'il est bien plus pratique de faire ceci en XPath. Donc, aujourd'hui, je me force à étudier le XPath avant tout autre réflexion.

Bonne journée à toi,


Billou_13