.JSON bestand met Base64 encoded XML

Status
Niet open voor verdere reacties.
Met een UDF (user defined formula)

In Module1
Code:
[SIZE=1]Public Function XMLToBASE64(strXML As String) As String
    Dim abytXML() As Byte
    abytXML = strXML
    With CreateObject("MSXML2.DOMDocument").CreateElement("base64")
        .DataType = "bin.base64"
        .nodeTypedValue = abytXML
        XMLToBASE64 = .text
    End With
End Function[/SIZE]

In cel B1
Code:
=XMLToBASE64(A1)
 
Thanks alphamax!
Op zich werkt dit, alleen krijg ik niet de juiste Base64 strings terug.
Mijn Base64 strings beginnen allemaal met 48AD8.
Dit krijg ik terug met jouw functie:
Code:
PAA/AHgAbQBsACAAdgBlAHIAcwBpAG8AbgA9ACIAMQAuADAAIgAgAGUAbgBjAG8AZABpAG4AZwA9ACIAVQBUAEYALQAxADYAIgAgAHMAdABhAG4AZABhAGwAbwBuAGUAPQAiAG4AbwAiAD8APgANAAoAPAByAG8AbwB0ACAAeABtAGwAgBzAD0AIgB1AHIAbgA6AG0AaQBjAHIAbwBzAG8AZgB0AC0AZAB5AG4AYQBtAGkAYwBzAC0AbgBhAHYALwB4AG0AbABwAG8AcgB0AHMALwB4ADYAMQA1ADAANwAwADAAIgA+AA0ACgAgACAAPABwAGEAcgBhAG0AIABhAGMAdABpAG8AbgA9AITABPAE8ASwBVAFAAIgAgAG4AYQBtAGUAPQAiAEwAbwBvAGsAdQBwAFQAeQBwAGUAIgAgAHQAeQBwAGUAPQAiADUAIgAgAHYAYQBsAHUAZQA9ACIASQB0AGUAbQAiACAALwA+AA0ACgAgACAAPABwAGEAcgBhAG0AIABhAGMAdABpAG8AbgAACIATABPAE8ASwBVAFAAIgAgAG4AYQBtAGUAPQAiAFYAaQBlAHcAIgAgAHQAeQBwAGUAPQAiADAAIgAgAHYAYQBsAHUAZQA9ACIAIgAgAC8APgANAAoAPAAvAHIAbwBvAHQAPgA=

Terwijl het eigenlijk dit zou moeten zijn:
Code:
48AD8AeABtAGwAIAB2AGUAcgBzAGkAbwBuAD0AIgAxAC4AMAAiACAAZQBuAGMAbwBkAGkAbgBnAD0AIgBVAFQARgAtADEANgAiACAAcwB0AGEAbgBkAGEAbABvAG4AZQA9ACIAbgBvACIAPwA+AA0ACgA8AHIAbwBvAHQAIAB4AG0AbABuAHMAPQAiAHUAcgBuADoAbQBpAGMAcgBvAHMAbwBmAHQALQBkAHkAbgBhAG0AaQBjAHMALQBuAGEAdgAvAHgAbQBsAHAAbwByAHQAcwAvAHgANgAxADUAMAA3ADAAMAAiAD4ADQAKACAAIAA8AHAAYQByAGEAbQAgAGEAYwB0AGkAbwBuAD0AIgBMAE8ATwBLAFUAUAAiACAAbgBhAG0AZQA9ACIATABvAG8AawB1AHAAVAB5AHAAZQAiACAAdAB5AHAAZQA9ACIANQAiACAAdgBhAGwAdQBlAD0AIgBJAHQAZQBtACIAIAAvAD4ADQAKACAAIAA8AHAAYQByAGEAbQAgAGEAYwB0AGkAbwBuAD0AIgBMAE8ATwBLAFUAUAAiACAAbgBhAG0AZQA9ACIAVgBpAGUAdwAiACAAdAB5AHAAZQA9ACIAMAAiACAAdgBhAGwAdQBlAD0AIgAiACAALwA+AA0ACgA8AC8AcgBvAG8AdAA+AA==

Weet je daar een oplossing voor?
 
De ' aan het begin van elke regel weghalen ?!?

Bijgevoegd een eigen testbestand waarin ik codeer en decoder en weer codeer en de resultaten vergelijk
Er zijn kleine verschillen in de Base64-strings maar dat komt volgens mij door hoe excel omgaat met spaties, tabs, carriage returns en linefeeds, dingen waar een XML-string toch al geen last van zou moeten hebben.
 

Bijlagen

  • helpmij renco123 json base64 decode xml.xls
    41,5 KB · Weergaven: 22
Laatst bewerkt:
@alphamax

Thanks! Ik zie Excel nu inderdaad returns toevoegen als het een wordt gedecodeerd en weer wordt gecodeerd.
Daarom zijn de strings niet gelijk aan elkaar. XML heeft er inderdaad geen last van, maar Dynamics NAV doet wel moeilijk bij een import van de base64 string door die returns.

Dit helpt bijzonder veel, waarvoor nogmaals dank!

Topic mag dicht.
 
Ik hoop dat je eruit komt met die returns, spaties en andere "onzichtbare" tekens, success
 
Excel kent een formule: wissen.control.
Deze formule verwijdert alle tekens die men niet kan printen, zoals carriage return etc.
Het opnieuw coderen verloopt vervolgens precies zoals het zou moeten met de juiste base64 string tot gevolg.
Bij het coderen pakt Excel eigenlijk de precieze opmaak van de xml, en die xml heeft carriage returns. Mijns inziens nog logisch ook achteraf gezien...

Allen nogmaals hartelijk dank voor alle hulp!
 
Laatst bewerkt:
Bedankt voor de tip over WISSEN.CONTROL zal zeker wel een keer van pas komen ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan