Tino hatte kürzlich einen Code hier für mich zur Verfügung gestellt, der einen XML File zunächst in einen String einliest und dann soll der Code in ein XML DOm Objekt eingelesen werden.
Einlesen in den String klappt aber das DOM Objekt bleibt leer und ich habe die Vermutung es liegt am Versatz in den einzelnen Zeilen:
Das Ganze sieht nämlich so aus:
<year yr="2013" amount="6.2" />
<year yr="2014" amount="4.7" />
<year yr="2015" amount="" />
</cashendofperiod>
</cashflow>
<lastupdate month="4" dayofmonth="30" yr="2015" />
</companyprofile>
Mit Dateien des gleichen Formats, die ich zunächst in einem Online XML-Viewer bearbeitet hatte, so dass alles linksbündig ist, funktioniert das Einlesen ins DOM Objekt wunderbar.Mir geht es jetzt darum den gesamten inhalt des ausgegebenen Textfile linksbündig zu bekommen. Ich vermute, dass man das entweder in der Funktion lösen kann oder in der Sub mit der man den Textfile speichert aber ich weiß nicht wie.
Das ist der Code:
Option Explicit
Sub Test()
Dim XML As Object, XMLNode As Object, fName As String
Dim sPathXML$, r&, sXMLString$
sPathXML = "E:\FTC XML Files\DE000DFAG997.xml"
fName = "DE000DFAG997"
sXMLString = LeseXMLFile(sPathXML)
Speichern sXMLString, fName ' Aufrufen der Sub zum Speichern
End Sub
' Sub zum Speichern des Textfile
Sub Speichern(Text As String, Filename As String)
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim targetFile As Object
Dim myFilePath As String
myFilePath = "C:\Users\Herbert_Meisel\Downloads\XML FTC\Textfiles\" & Filename & ".txt"
Set targetFile = fso.CreateTextFile(myFilePath, True) ' this will overwrite any existing _
file
targetFile.Write (Text)
targetFile.Close ' close the file
End Sub
' Funktion zum Entfernen der Doc Type Zeile
Function LeseXMLFile(sPath$) As String
Dim F%, sInhalt$, Regex As Object
F = FreeFile
Open sPath For Binary As #F
sInhalt = Space$(LOF(F))
Get #F, , sInhalt
Close
Set Regex = CreateObject("Vbscript.Regexp")
With Regex
.MultiLine = True
.Pattern = "+>\n?"
.Global = True
.IgnoreCase = True
If .Test(sInhalt) Then
sInhalt = .Replace(sInhalt, "")
End If
End With
LeseXMLFile = sInhalt
End Function