Parser un flux XML

abuzed Messages postés 15 Date d'inscription mardi 5 juillet 2005 Statut Membre Dernière intervention 30 novembre 2007 - 1 nov. 2007 à 10:38
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 - 7 nov. 2007 à 19:25
Bonjour,

Je suis débutant en VB, et je voudrais parser un XML pour retenir seulement les informations qu'il me servirons plus tard.

Je m'explique:

<NewsXML>
  <Meta>
   
  </Meta>
</ NewsXML>

Je voudrai récuperer "nom_a_recuperer"

Je ne sias pas comment récup une valeur dans une valise.
Merci beaucoup de votre soutiens.

AbuZeD

6 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
1 nov. 2007 à 11:14
Salut

Es-tu en vb6 ou vb.net

En vb.net
Il faut utiliser
xmlDOC =  new xmldocument
xmlDOC.Load(cheminfichier)
node = xmldoc.selectsinlgenode("XMLPATH")

chaine = node.attribute["nom"].value

Pour le xmlpath
il doit ressembler à /NewsXML/Meta/Balise[@nom='nomarecupere']

C'est un debut d'algo avec des idées, a toi de completer avec les declaration et plus.

Inspire toi de cette page aussi
cf http://www.codeproject.com/soap/myXPath.asp

Bon courage
0
abuzed Messages postés 15 Date d'inscription mardi 5 juillet 2005 Statut Membre Dernière intervention 30 novembre 2007
7 nov. 2007 à 09:28
Salut,

Tout d'abord merci pour ta réponse.
Je suis en VB6.

J'ai une petite question, pourquoi mettre [@nom='nomarecupere'] si l'ont utilise "chaine = node.attribute["nom"].value" apres?

Merci pour tout
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
7 nov. 2007 à 13:42
Salut

Voila un tuto
http://khany.developpez.com/tutoriel/xml/

Pour ta question, le xpath est pour l'interogation du fichier xml est gros c'est la requête,
et le node.attribute["nom"].value

C'est la lecture de la reponse dans le selection des resultats de la requete XPATH

Voila
0
abuzed Messages postés 15 Date d'inscription mardi 5 juillet 2005 Statut Membre Dernière intervention 30 novembre 2007
7 nov. 2007 à 16:24
Salut,

J'y suis presque...

Par contre je block sur un truck, voiçi le code:

Private Sub test_on_click()

    Dim xmlDoc As New MSXML2.DOMDocument
        xmlDoc.Load ("PATH:\XML.xml")

        Dim test As Variant

        test = xmlDoc.selectSingleNode("//Meta").Text

For Each noeuIn xmlDoc.getElementsByTagName("balise")
            MsgBox noeu.getAttribute("noeu")
        Next
End Sub

Comme tu peux le voir, j'ai déclaré ma variable en variant car MSXML2 ne reconnait pas getAttribute.

Pas contre j'ai plusieur du même nom, mais celle qui m'interesse se trouve dans le noeu Meta.

Mon code me retourne la valeur que je veux sauf qu'il ne tien pas compte de mon SelectSingleNode.

Merci de ton aide!
0

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

Posez votre question
abuzed Messages postés 15 Date d'inscription mardi 5 juillet 2005 Statut Membre Dernière intervention 30 novembre 2007
7 nov. 2007 à 16:27
Oups quelques soucis de copier coller.

Jai oubli de mettre cette ligne (déclaration de variables):

Dim Noeu, balise As Variant

Et oubli un espace à cette ligne: For Each noeu In xmlDoc.getElementsByTagName("balise")
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
7 nov. 2007 à 19:25
C'est logique
getElementsByTagName --> renvoie une collection de noeud du document
et c'est cette collection que tu parcours
et non le node selectionné par la fonction selectsinglenode

Bases toi issue d'internet  sur le code suivant pour corriger

Bon courage
Set Objet_NodeList = Objet_Document.getElementsByTagName("logiciel")

For i = 0 To Objet_NodeList.length - 1 Step 2
set noeud = Objet_NodeList.item(i)
set oEditeur = noeud.selectSingleNode("editeur")
set oCommentaire = noeud.selectSingleNode("commentaire")
resultat = resultat & "<tr><td>" _
& noeud.attributes.item(0).nodeValue _
& "</td><td> : " _
& noeud.firstchild.text & "</td></td><td>" _
& oEditeur.text & "</td></td><td>" _
& oCommentaire.text & "</td></tr>"
Next
0
Rejoignez-nous