Domino 9 und frühere Versionen > ND6: Entwicklung

DXL Importer / Exporter

(1/1)

jr:
Hallo,

kurz vor Weihnachten noch ein kleines Problem.

Ich muss in Ansichten den Hintergrund und die Schriftart der Aktionsleiste ändern. Da das nicht nur eine Datenbank betrifft und eine der Datenbanken weit über 100 Ansichten besitzt wäre mir da eine programmierte Lösung recht.

Also, dachte ich mir, exportiere die Ansichten per DXL, mache mit einem Text-Editor einen globales "Suchen und Ersetzen" (z. B. im XML Cooktop) und importiere das Ganze wieder. Pustekuchen, manchmal klappts, meistens nicht.

Die Meldung heißt "Object or data is corrupt"
Das passiert sogar, wenn ich die Daten nur exportiere und ohne Änderung wieder importiere.

Ach ja, noch etwas: Wenn der Import klappt, dann zerbröselt es die Umlaute. Betrifft zwar nur wenige Ansichten, ist aber trotzdem ärgerlich. Kann man etwas dagegen machen?

Vielleicht gibt's ja noch alternative Lösungen, aber irgend wie stehe ich auf dem Schlauch.

Hier mal den auf das wesentliche reduzierte Code für den Export und Import:

Der Export-Agent:

--- Code: ---Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim noteCol As NotesNoteCollection
Dim exporter As NotesDXLExporter
Dim stream As NotesStream

Const FILENAME = "C:\test.xml"

Set db = session.CurrentDatabase

Set noteCol = db.CreateNoteCollection(False)
noteCol.SelectViews = True
Call noteCol.BuildCollection

Set stream = session.CreateStream
If (Not(stream.Open(FILENAME))) Then Msgbox "Datei konnte nicht erstellt werden!",,"Fehler" : Exit Sub
Call stream.Truncate

Set exporter = session.CreateDXLExporter(noteCol, stream)
Call exporter.Process()
End Sub

--- Ende Code ---

Und der Import-Agent:

--- Code: ---Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim noteCol As NotesNoteCollection
Dim importer As NotesDXLImporter
Dim stream As NotesStream

Const FILENAME = "C:\test.xml"

Set db = session.CurrentDatabase

Set stream = session.CreateStream
If (Not(stream.Open(FILENAME))) Then Msgbox "Datei konnte nicht geöffnet werden!",,"Fehler" : Exit Sub
If (stream.Bytes = 0) Then Msgbox "Die Datei ist leer!",,"Fehler" : Exit Sub

On Error Goto Fehler

Set importer = session.CreateDXLImporter(stream, db)
importer.DesignImportOption = DXLIMPORTOPTION_CREATE
Call importer.Process()
Exit Sub

Fehler:
Msgbox importer.Log,,"Fehler"
Resume Next
End Sub

--- Ende Code ---

Ein Unterschied zwischen "test.xml" und "test.dxl" scheint wohl nicht zu existieren und es gibt die gleichen Fehler.

Vielleicht hat ja jemand eine Idee. Bin für jeden Tipp dankbar.

Viele Grüße,

Joachim

Thomas Schulte:
schau bei Wflamme nach. Der hat da eine schöne Lösung für dein Problem gezeigt.

Thomas

jr:
Hallo Thomas,

super Tipp. Dauerte zwar ein Weilchen, bis ich wusste, was Du meinst, aber das ist genau das was ich brauche.

Vielen Dank,

Joachim

Navigation

[0] Themen-Index

Zur normalen Ansicht wechseln