Beim Exportieren von Daten aus Excel in eine XML-Datei werden für die enthaltenen XML-Namespaces standardmäßig Präfixe der Form ns1, ns2 ... verwendet (siehe Export von XML-Daten). In einer XML-Datei benötigte ich nun aber ein eigenes Präfix, da Natural leider nicht ohne Weiteres mit XML-Namespaces umgehen kann und die Präfixe hart codiert werden müssen, um die Inhalte der Elemente auslesen zu können.
Nach einiger Suche habe ich leider keine passende Lösung für dieses Problem gefunden. Ich exportiere die XML-Daten nun einfach manuell! Anstatt ActiveWorkbook.XmlMaps.Export() zu verwenden, womit direkt eine XML-Datei erstellt werden könnte, nutze ich nun ActiveWorkbook.XmlMaps.ExportXML(). Diese Methode liefert einen XML-String zurück, den ich im Nachhinein wie gewünscht anpasse:
-
dim xmlstring as String
-
dim exportError as XlXmlExportResult
-
dim dateiname as String
-
exportError = ActiveWorkbook.XmlMaps("XML_Zuordnung").ExportXML(xmlstring)
-
' Validierung fehlgeschlagen
-
If exportError = xlXmlExportValidationFailed Then
-
Exit Sub
-
End If
-
' Namespace-Prefix ersetzen: ns1 -> tab
-
xmlstring = Replace(xmlstring, "ns1", "tab")
-
' Datei schreiben
-
Open dateiname For Output Access Write As 1
-
Print #1, xmlstring
-
Close #1
Es wäre schön, wenn es eine bessere Lösung gäbe, aber ich habe nichts Vergleichbares finden können. Weiß da irgendjemand mehr?











