Menu

Lire des données xml en VB [Fermé]

Messages postés
47
Date d'inscription
mercredi 2 décembre 2009
Dernière intervention
29 mai 2015
- - Dernière réponse : maxkun
Messages postés
47
Date d'inscription
mercredi 2 décembre 2009
Dernière intervention
29 mai 2015
- 28 sept. 2011 à 11:46
Bonjour, voila, j'aimerai lire des données XML en vb, mais je débute et je ne vois pas comment faire, quelqu'un pourrait m'aider???

En gros j'ai le code suivant, et j'aimerai voir s'afficher dans ma console la donnée XXXX :

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<fax xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<properties>
<property_name="ANI">
<value xsi:type="xsd:string">XXXX</value>
</property_name>
<files>
<file>
<path>C:\XMediusFAX\Temp\457DD0EF-78B9-4712-89B8-92336C4D533F-500-IF.tiff</path>
</file>
</files>

</fax>

Cordialement maxkun.


Afficher la suite 

4 réponses

Messages postés
47
Date d'inscription
mercredi 2 décembre 2009
Dernière intervention
29 mai 2015
2
0
Merci
J'ai essayer le code que tu m'as montrer mais il ne reconnait pas les types DOMDocument et IXMLDOMElement, il faut que j'importe quelle librairie pour qu'il les reconnaissent?

Cordialement maxkun.
Oui, il faut dans ton projet ajouter le Microsoft XML
C'est marqué au début du tutorial

Ca se trouve dans les références du projet
maxkun
Messages postés
47
Date d'inscription
mercredi 2 décembre 2009
Dernière intervention
29 mai 2015
2 -
C'est bon, je l'ai ajouté, ensuite j'ai utiliser la fonction BrowseXMLDocument comme convenu avec en paramètre le chemin du fichier, cependant rien ne s'affiche dans la console, la fonction ne retourne rien. Que faire?
Utilisateur anonyme -
Le code du tutorial ne répond pas à votre question, creusez un peu pour voir les fonctionnalités de DomDocument (API Windows) http://msdn.microsoft.com/fr-fr/library/aa468547.aspx dans le MSDN, vous trouverez votre bonheur.
Il faut chercher un peu aussi.

Cordialement
Messages postés
47
Date d'inscription
mercredi 2 décembre 2009
Dernière intervention
29 mai 2015
2
0
Merci
Après quelques recherches j'ai fini par réussir à afficher la valeur que je voulais.

Imports System.Xml 

Module Module1 

    Sub Main() 
        'Dim xDoc As System.Xml.XmlDocument 
        Dim xDoc As MSXML.DOMDocument 
        xDoc = New MSXML.DOMDocument 
        Dim xPE As MSXML.IXMLDOMParseError 
        If xDoc.Load("C:\Documents and Settings\mdorget\Bureau\vraie_fax.XML") Then 
            ' Le document a été chargé avec succès. 
            ' Maintenant faites quelque chose d'intéressant. 
            DisplayNode(xDoc.ChildNodes, 0) 
        Else 
            ' Impossible de charger le document 
            Dim strErrText As String 
            ' Obtient l'objet ParseError 
            xPE = xDoc.parseError 
            With xPE 
                strErrText = "Your XML Document failed to load " & _ 
               "due the following error." & vbCrLf & _ 
               "Error #: " & .errorCode & ": " & xPE.reason & _ 
               "Line #: " & .line & vbCrLf & _ 
               "Line Position: " & .linepos & vbCrLf & _ 
               "Position In File: " & .filepos & vbCrLf & _ 
               "Source Text: " & .srcText & vbCrLf & _ 
               "Document URL: " & .url 
            End With 

            MsgBox(strErrText, vbExclamation) 
        End If 

        xPE = Nothing 
        Console.ReadLine() 
    End Sub 
     
    Public Sub DisplayNode(ByRef Nodes As MSXML.IXMLDOMNodeList, _ 
     ByVal Indent As Integer) 

        Dim xNode As MSXML.IXMLDOMNode 
        Indent = Indent + 2 

        For Each xNode In Nodes 
            If xNode.nodeType = MSXML.DOMNodeType.NODE_TEXT Then 
                Debug.Print(Space$(Indent) & xNode.parentNode.nodeName & _ 
                 ":" & xNode.nodeValue) 
                Console.WriteLine(xNode.parentNode.nodeName & _ 
                 ":" & xNode.nodeValue) 
            End If 

            If xNode.hasChildNodes Then 
                DisplayNode(xNode.childNodes, Indent) 
            End If 
        Next xNode 
        
    End Sub 
End Module


Avec ce code j'arrive à afficher les valeurs entre les balises, cependant est-il possible de mettre ces valeurs dans des variables suivant le nom de chaque attribut (par exemple pour l'attribut ANI la variable vaut XXXX, pour un autre attribut elle vaut YYYY)?
Messages postés
47
Date d'inscription
mercredi 2 décembre 2009
Dernière intervention
29 mai 2015
2
0
Merci
Pour ceux que ça intéresse, ce code permet d'extraire une valeur selon un attribut :

Dim q = (From [property] In XDocument.Load("XMLFile1.xml").Element("fax").Element("properties").Elements("property")
                Where [property].Attribute("name") = "ANI"
                Select [property].Element("value").Value).SingleOrDefault()