Guten Morgen,
ich versuche schon eine ganze Weile eine große XML Datei in mehrere Dateien aufzusplitten. Das soll nach dem Schließen eines speziellen Elements passieren.
Habe bereits mehrere Möglichkeiten ausprobiert:
- Xpath Element- und Attributwerte einlesen und direkt in neue Datei schreiben (Problem: Setzen des Zeigers auf die nächste "Elementgruppe")
- Mit Xpath allles einlesen, Element- und Attributwerte in Collections speichern und darauf basierend eine XML-Datei pro Collection-Item schreiben. (Problem: manche Elemente/Attribute sind optional)
Jetzt versuche ich gerade das Ganze mit einem einfachen StreamReader und dem Split-Befehl zu lösen. Den Inhalt der Datei habe ich bereits komplett in einen String laden können. Der nächste Schritt wäre das Splitten.
Hier habe ich 2 Probleme:
1. Ich muss im Prinzip Beginn und Ende angeben (<Partneridentifier>, </Partneridentifier>)
2. Ich weiss nicht wie ich den Inhaltsstring durchlaufen soll. Mir fehlt eine passende Bedingung
Es wäre sehr nett, wenn man mir helfen könnte.
Läuft fast, aber ich kriege das Start- und Endtag von PartnerIdentifier doppelt ausgegeben.
ich versuche schon eine ganze Weile eine große XML Datei in mehrere Dateien aufzusplitten. Das soll nach dem Schließen eines speziellen Elements passieren.
Habe bereits mehrere Möglichkeiten ausprobiert:
- Xpath Element- und Attributwerte einlesen und direkt in neue Datei schreiben (Problem: Setzen des Zeigers auf die nächste "Elementgruppe")
- Mit Xpath allles einlesen, Element- und Attributwerte in Collections speichern und darauf basierend eine XML-Datei pro Collection-Item schreiben. (Problem: manche Elemente/Attribute sind optional)
Jetzt versuche ich gerade das Ganze mit einem einfachen StreamReader und dem Split-Befehl zu lösen. Den Inhalt der Datei habe ich bereits komplett in einen String laden können. Der nächste Schritt wäre das Splitten.
Hier habe ich 2 Probleme:
1. Ich muss im Prinzip Beginn und Ende angeben (<Partneridentifier>, </Partneridentifier>)
2. Ich weiss nicht wie ich den Inhaltsstring durchlaufen soll. Mir fehlt eine passende Bedingung
Es wäre sehr nett, wenn man mir helfen könnte.
Code:
Sub ReadXmln(ByVal sourcePath As String) Dim DateiPfad = sourcePath & ".xml" Dim sr As StreamReader = New StreamReader(DateiPfad) Dim Von = "<PartnerIdentifier" Dim Bis = "</PartnerIdentifier>" Dim Ausgabe As String = "" Dim AusDatei As String Dim Collect As Boolean Dim Inhalt() As String Inhalt = Split(sr.ReadToEnd(), vbCrLf) For i = 0 To UBound(Inhalt) If InStr(Inhalt(i), Von) > 0 Then Ausgabe = Ausgabe & Inhalt(i) AusDatei = "" Collect = True End If If Collect Then Ausgabe = Ausgabe & Inhalt(i) End If If InStr(Inhalt(i), Bis) > 0 Then Ausgabe = Ausgabe & Inhalt(i) Collect = False MsgBox(Ausgabe) Ausgabe = "" End If Next End Sub
Comment