Umgang mit XML in VSTO Template Projekten

05 Oktober 2010
Andreas Heizmann

Dieser Artikel richtet sich an Entwickler, welche mit XML in VSTO 2003 Projekten arbeiten.

XML an sich ist eine tolle Sache. Über eine vorgegebene Struktur (Schema) kann man schnell und einfach Daten lesen und schreiben. Vor allem bei Word Dokumenten, welche an sich keine feste Struktur haben, kann man mit Hilfe von XML Ordnung ins Chaos bringen. Das erkannte auch Microsoft und stellte ab Word 2007 ein neues Dateiformat bereit: “.docx”.

Word 2003 Benutzer können über ein Compatibility Pack die Vorteile von docx nutzen, für VSTO-2003 Entwickler gibt es so ein Upgrade leider nicht, und so müssen sich diese ihre Dokumente selbst durch XML strukturieren. Ein Prozess, der sich schwierig und umständlich gestallten kann.

Mit ein paar Kniffen an der richtigen Stelle lässt sich jedoch eine Menge Zeit und Nerven sparen.

Die Grundvoraussetzung für ein sorgenfreies XML Handling ist die korrekte Verknüpfung von XML Schema mit der Schemabibliothek von Word. Die Schemabibliothek erreicht man in Word 2003 über Extras / Vorlagen und Add-Ins / XML – Schema / Schemabibliothek.

Auch ohne Schema-Eintrag lässt sich in Word mit XML arbeiten, dies ist jedoch nicht empfehlenswert, da Word ohne Schema, also ohne Struktur, nicht weiß wie die Tags richtig anzuordnen sind und dann beginnt, Unmengen von Fehlermeldungen auszugeben.

Verteilt man nun automatisierte Dokumente, muss man vor der Arbeit mit XML sicherstellen, dass das Schema, welches verwendet wird, korrekt in der Bibliothek verankert sind.

Das geschieht im Code über die folgenden Zeilen:

  1. objectschemaNamespace=mySchemaFileName;stringlocation=mySchemaLocation;try
  2. {
  3. // Überprüft ob das Schema in der Bibliothek existiert:
  4. Interop.Word.XMLNamespacexmlNamespace=this.Application.XMLNamespaces.get_Item(refschemaNamespace);
  5. // Überprüft den Pfad und korrigiert diesen falls notwendig:
  6. if(xmlNamespace.get_Location(false)!=location){xmlNamespace.set_Location(true,location);}
  7. }
  8. catch
  9. {
  10. // Fügt das Schema der Bibliothek hinzu:
  11. this.Application.XMLNamespaces.Add(location,refschemaNamespace,refschemaNamespace,false);
  12. }

Durch das Überprüfen des Schemas zum Start ermöglicht und erleichtert man das Lesen und Schreiben von XML und stellt sicher, dass Schema-Verletzungen korrekt angezeigt werden.

  Template  VSTO  XML