Bonjour,
Pour application Accès (donc VBA ...)
Je reçois d'un webservice un fichier XML dont un des champs contient les données d'un fichier compressé.
Le but du jeu : décompresser le fichier, et lire les informations du contenu.
Problème :
- Je reçois bien les informations du xlm général (visibles en expression espionne)
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <?xml version='1.0' encoding='UTF-8'?> <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <S:Body> <IpBGetInventaireResponse xmlns="http://www.idele.fr/XML/Schema/" xmlns:ns2="http://www.fiea.org/types/"> <ReponseStandard><ns2:Resultat>true</ns2:Resultat></ReponseStandard> <ReponseSpecifique> <NbBovins>185</NbBovins> <MessageZip>UEsDBC0AAAAIAO ... AAAABAAEAUAAAACIeAAAAAA==</MessageZip> </ReponseSpecifique> </IpBGetInventaireResponse> </S:Body> </S:Envelope>
- Les données de la balise <MessageZip> sont extraites avec une fonction MID, placée dans la variable Inventaire (j'ai essayé string et Byte)
- En enregistrant le fichier avec le code suivant, je ne peux pas le lire sous windows (message : Fichier n'est pas valide) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Debut = InStr(1, sxml, "<MessageZip>") + Len("<MessageZip>") NbCar = InStr(1, sxml, "</MessageZip>") - Debut Inventaire = Mid(sxml, Debut, NbCar + 1)
- En tentant de convertir en bin64, erreur "Paramètre incorrect" sur l'instruction Put
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 fileNmb = FreeFile Open CurrentProject.Path & "\" & "ESSAI.zip" For Binary Access Write As #fileNmb Put #fileNmb, 1, Inventaire Close #fileNmb
Avez-vous une idée ? Pour ma part, je sèche ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Set oXml = New DOMDocument60 ' CreateObject("Msxml2.DOMDocument") Set oNode = oXml.createElement("base64") oNode.DataType = "bin.base64" oNode.text = Inventaire fileNmb = FreeFile Open CurrentProject.Path & "\" & "ESSAI.zip" For Binary Access Write As #fileNmb Put #fileNmb, 1, oNode.nodeTypedValue Close #fileNmb
Partager