Lire un flux XMLdans mon appli ?

foliop Messages postés 191 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 27 octobre 2008 - 12 oct. 2004 à 12:21
cs_MartinEden Messages postés 5 Date d'inscription mercredi 19 septembre 2007 Statut Membre Dernière intervention 15 décembre 2009 - 15 avril 2009 à 10:19
salut

jai un flux XML et jaimerai lire des infos contenu dans le XML sur mon appli

comment faire ?

3 réponses

thierrydelepine Messages postés 521 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 septembre 2008 6
12 oct. 2004 à 18:35
pour utiliser XML dans VB il faut faire une reference à :

Microsoft XML, version ...

puis dans ton code

Dim XML As MSXML2.DOMDocument40
Set XML = New MSXML2.DOMDocument40

'pour lire
XML.Load + chemin et nom du fichier XML a lire
ou
xml.loadXML + un string contenant du XML (string qui peut être des données recus par winsock)

Il existe sur ce site plusieurs exemple de lecture de fichiers XML
fait un peu de recherche
0
kriesgraf Messages postés 33 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 17 février 2021
12 oct. 2004 à 22:09
Autre solution est de creer un handler pour le parser SAX de la bibliotheque MSXML.

Il faut creer un module de classe dans lequel on implemente les interface du parser.

Il faut ecrire la ligne suivante en entete de ce module:

Implements IVBSAXContentHandler

Dans les listes deroulante, il faut selectionner une à une toute les methodes de l'interface pour les implanter dans le module.

Il suffit alors d'implante ton decodage des informations dans chacune des methodes.

Ensuite il faut passer ce module de classe au "reader" de SAX pour effectuer le parsing.

Voici le code :

Set reader = New SAXXMLReader
Set declHandler = New ClassDeclHandler ' Le module de classe heritant de IVBSAXContentHandler

Set reader.contentHandler = declHandler

reader.parseURL(filename)

' ou bien

reader.parse(chaine)

kriesgraf
0
cs_MartinEden Messages postés 5 Date d'inscription mercredi 19 septembre 2007 Statut Membre Dernière intervention 15 décembre 2009
15 avril 2009 à 10:19
Bonjour, voici la solution VBA, si tu veux du vb.Net dis le moi.
 Dans Access la référence xmlDom doivent être présentes.

Bon courage et merci à code sources.

'La classe de validation. MyValidator

 Option Compare Database
Option Explicit
Implements IVBSAXErrorHandler

Private Sub IVBSAXErrorHandler_error(ByVal oLocator As MSXML2.IVBSAXLocator, _
            strErrorMessage As String, ByVal nErrorCode As Long)
   WriteErrorToDebugWindow "Erreur de validation", strErrorMessage, _
         nErrorCode, oLocator.lineNumber, oLocator.columnNumber
End Sub

Private Sub IVBSAXErrorHandler_fatalError(ByVal oLocator As MSXML2.IVBSAXLocator, _
            strErrorMessage As String, ByVal nErrorCode As Long)

   WriteErrorToDebugWindow "Erreur fatal ou erreur de parssage", strErrorMessage, _
         nErrorCode, oLocator.lineNumber, oLocator.columnNumber
End Sub

Private Sub IVBSAXErrorHandler_ignorableWarning(ByVal oLocator As MSXML2.IVBSAXLocator, _
            strErrorMessage As String, ByVal nErrorCode As Long)
End Sub

Private Sub WriteErrorToDebugWindow(strLabel As String, _
   strDescription As String, ByVal ErrCode As Long, _
   Line As Long, Column As Long)
  retr = retr & _
        strDescription & "ligne " & _
        Str(Line) & ", colonne " & _
        Str(Column) + vbCrLf + vbCrLf
End Sub

'La fonction

Public Function validatXML(UrnSchem As String, Schema As String, flXml As String)

' Exemple:
' UrnSchem =  urn:iso:std:iso:20022:tech:xsd:pacs.004.001.01
' Schema     =  pacs.004.001.01.xsd
'  flXml         = Fic.xml

'Creation du SAX reader.
Dim Reader As New SAXXMLReader60
'Create du schema XML  en cache
Dim vSC As New MSXML2.XMLSchemaCache60
Dim Validateur As New MyValidator
On Error GoTo errlg
'Mise en cache du schéma.
  vSC.Add UrnSchem, Schema
'Configure le SAX reader pour valider le document XML .
  Reader.putFeature "schema-validation", True
  Reader.putFeature "exhaustive-errors", True
  Reader.putProperty "schemas", vSC

'Assigne une instance de class MyValidator
'la proriété errorHandler pour SAX reader.
 
 Set Reader.errorHandler = Validateur
 
  'Parse et valide le fichier

  Reader.parseURL flXml
 retr = "Fin du parçage et validation"
errlg:
retr = retr & vbCrLf & Err.Description & vbCrLf & Err.Number
If Err.Number <> "0" Then Exit Function
Set Reader = Nothing
Set vSC = Nothing
Set Validateur = Nothing
End Function
0
Rejoignez-nous