XML-Export aus Excel: Namespace-Präfix ’ns1′ durch eigenes Präfix ersetzen

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?

Über uns Stefan

Polyglot Clean Code Developer

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax