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?