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

URL dieses Beitrags: http://blog.stefan-macke.com/2007/08/06/xml-export-aus-excel-namespace-praefix-ns1-durch-eigenes-praefix-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:

  1. dim xmlstring as String
  2. dim exportError as XlXmlExportResult
  3. dim dateiname as String
  4. exportError = ActiveWorkbook.XmlMaps("XML_Zuordnung").ExportXML(xmlstring)
  5. ' Validierung fehlgeschlagen
  6. If exportError = xlXmlExportValidationFailed Then
  7.   Exit Sub
  8. End If
  9. ' Namespace-Prefix ersetzen: ns1 -> tab
  10. xmlstring = Replace(xmlstring, "ns1", "tab")
  11. ' Datei schreiben
  12. Open dateiname For Output Access Write As 1
  13. Print #1, xmlstring
  14. 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?

Füge diesen Artikel zu deinen Bookmarks hinzu Diese Icons verzweigen auf soziale Netzwerke bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • del.icio.us
  • bodytext
  • MisterWong
  • Reddit
  • Technorati
  • Spurl
  • description

Einen Kommentar schreiben

XHTML: Diese Tags sind erlaubt: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>