Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: jr am 17.12.04 - 11:33:30

Titel: DXL Importer / Exporter
Beitrag von: jr am 17.12.04 - 11:33:30
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

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

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
Titel: Re: DXL Importer / Exporter
Beitrag von: Thomas Schulte am 20.12.04 - 12:39:48
schau bei Wflamme nach. Der hat da eine schöne Lösung für dein Problem gezeigt.

Thomas
Titel: Re: DXL Importer / Exporter
Beitrag von: jr am 21.12.04 - 20:24:29
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