Lire des données xml en VB

maxkun Messages postés 27 Date d'inscription   Statut Membre Dernière intervention   -  
maxkun Messages postés 27 Date d'inscription   Statut Membre Dernière intervention   -
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.

4 réponses

  1. maxkun Messages postés 27 Date d'inscription   Statut Membre Dernière intervention   4
     
    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
    1. Utilisateur anonyme
       
      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
    2. maxkun Messages postés 27 Date d'inscription   Statut Membre Dernière intervention   4
       
      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
    3. 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
      0
  2. maxkun Messages postés 27 Date d'inscription   Statut Membre Dernière intervention   4
     
    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
  3. maxkun Messages postés 27 Date d'inscription   Statut Membre Dernière intervention   4
     
    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