Lire des données xml en VB

Fermé
maxkun Messages postés 52 Date d'inscription mercredi 2 décembre 2009 Statut Membre Dernière intervention 2 novembre 2020 - 23 sept. 2011 à 08:34
maxkun Messages postés 52 Date d'inscription mercredi 2 décembre 2009 Statut Membre Dernière intervention 2 novembre 2020 - 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.


A voir également:

4 réponses

Bonjour,

Il y a une API qui fait ça : Microsoft XML

https://vb.developpez.com/faq/?page=Routines#lirexml
Zébulon
0
maxkun Messages postés 52 Date d'inscription mercredi 2 décembre 2009 Statut Membre Dernière intervention 2 novembre 2020 4
23 sept. 2011 à 08:54
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.
0
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
0
maxkun Messages postés 52 Date d'inscription mercredi 2 décembre 2009 Statut Membre Dernière intervention 2 novembre 2020 4
23 sept. 2011 à 09:04
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?
0
Utilisateur anonyme
23 sept. 2011 à 10:02
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
0
maxkun Messages postés 52 Date d'inscription mercredi 2 décembre 2009 Statut Membre Dernière intervention 2 novembre 2020 4
Modifié par maxkun le 26/09/2011 à 16:22
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)?
0
maxkun Messages postés 52 Date d'inscription mercredi 2 décembre 2009 Statut Membre Dernière intervention 2 novembre 2020 4
28 sept. 2011 à 11:46
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()
0