Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1752to1756
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

xml vers.1.0 UTF-16 auslesen Knoten durchlaufen & & speichern

xml vers.1.0 UTF-16 auslesen Knoten durchlaufen & & speichern
23.04.2020 18:34:32
Robert
Hallo,
ich möchte ein xml auslesen, alle Knoten durchsuchen und ggfls verändern und das xml wieder speichern.
Es handelt sich hier um ein SAS Projekt, falls das weiterhilft.
Die xml Datei öffne ich mit nachstehendem Code. Mit ADODB.Stream saveToFile habe ich versucht zu speichern, ist das Ergebnis unbrauchbar
1. Lese ich die Datei richtig ein
2. Wie durchlaufe ich alle Knoten am Besten
3. Wie speichere ich das xml wieder in UTF-16
Danke für eure Hilfe!

Private Sub ChangeXML()
Dim path As String
Dim xmlDoc As New MSXML2.DOMDocument60
Dim xmlKnoten As MSXML2.IXMLDOMElement
Dim xmlAttribut As Object
Dim xpathKnoten As String
path = "C:\Users\vovgr03\Desktop\OrdnerFileSearch\OrigFileVorMigration\project.xml"
xmlDoc.async = False
xmlDoc.validateOnParse = True
'   xmlDoc.Encoding = "UTF-16" 'funkt nicht
xmlDoc.Load (path)
' Alle Knoten durchlaufen
'Speichern des XML
'   Dim w As New MSXML2.MXXMLWriter60
'   Dim r As New SAXXMLReader60
'   Dim s As New ADODB.Stream
End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: nimm PowerShell owT
23.04.2020 18:42:47
Fennek
AW: xml vers.1.0 UTF-16 auslesen Knoten durchlaufen & & speichern
24.04.2020 13:17:31
Zwenn
Hallo Robert,
MSXML erkennt die Codierung laut Microsoft an der ersten Zeile einer XML-Datei. Gleiches Gilt für das Schreiben einer XML-Datei. Es muss also schon drinstehen, dass es sich um UTF-16 handelt.
Ich habe das nicht ausprobiert, dazu aber folgende beiden Links recherchiert:
INFO: XML-Codierung und DOM-Methoden
https://support.microsoft.com/de-de/help/275883/info-xml-encoding-and-dom-interface-methods
XML-Dokumente mit VBA erstellen und lesen
https://access-im-unternehmen.de/XMLDokumente_mit_VBA_erstellen_und_lesen/
Den Part "alle Knoten durchsuchen und ggfls verändern" musst Du näher ausführen. Es gibt Methoden des DOM, mit denen Du über die Struktur einer XML-Datei gezielt auf Knoten zugreifen kannst. Einfach mal alle durchgehen ist zu schwammig.
Viele Grüße,
Zwenn
Anzeige
AW: xml vers.1.0 UTF-16 auslesen Knoten durchlaufen & & speichern
27.04.2020 10:28:21
Robert
Hallo Zwenn,
Danke für die Links.
Ich habe eine bestehende xml Datei, deren Blätter ich bearbeiten möchte. Das geänderte Objekt möchte ich dann wieder speichern. Das xml hat folgenden Kopf:
?xml version="1.0" encoding="UTF-16"?
Es handelt sich hier um ein Eguide Projekt von SAS. Wir haben eine Migration anstehen. Dummerweise funktionieren einige Funktionen in EGuide-Projekten am neuen Server nicht mehr korrekt, ich muss daher einzelne Funktionen gegen eine Ersatzfunktion austauschen. Das mache ich via regEx und funktioniert auch - Danke an dieser Stelle an Fennek für seine Hilfestellung.
Ich muss daher den xml File einlesen, den Baum nach Funktionen durchsuchen und den text austauschen. Das geänderte XML möchte ich dann wieder speichern.
Wenn ich das xml einlese (mit obigen code, um xmlDoc.preserveWhiteSpace = True ergänzt) und dann gleich wieder speichere (xmlDoc.save) hat das xml interessanter Weise eine andere Dateigröße (von 2.025kb auf 2.021kb).
Das Projekt läuft zwar, aber dass mit der Dateigröße macht mich unsicher.
gibt es da noch Optionen, die man beim Einlesen setzen muss?
Knoten durchlaufen: Es gibt leider keine Doku von SAS, sodass ich wüsste welchen Knoten ich gezielt auswählen müsste. Ich muss daher alle Blätter durchsuchen.
Danke
LG
Robert
Private Sub ChangeXML()
Dim path As String
Dim xmlDoc As New MSXML2.DOMDocument60
Dim xmlKnoten As MSXML2.IXMLDOMElement
Dim xmlAttribut As Object
Dim xpathKnoten As String
path = "C:\Users\vovgr03\Desktop\OrdnerFileSearch\OrigFileVorMigration\project.xml"
xmlDoc.async = False
xmlDoc.validateOnParse = True
xmlDoc.preserveWhiteSpace = True
xmlDoc.Load (path)
xmlDoc.Save "C:\Users\vovgr03\Desktop\OrdnerFileSearch\OrigFileVorMigration\project2.xml"
End Sub

Anzeige
ist gelöst.
27.04.2020 15:55:54
Robert
Danke.

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige