Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Binser am 18.07.08 - 13:39:15

Titel: Problem mit dem Import von einem XML-Stream
Beitrag von: Binser am 18.07.08 - 13:39:15
Hallo,

ich möchte eine vorhanden maske in einen string exportieren (bei bedarf verarbeiten) und zum schluss wieder importieren. Dies klappt auch alles soweit (das verarbeiten der maske habe ich erstmal rausgelassen). Den Export über den NotesDXLExporter und Import über NotesDXLImporter.

Habe mir die "originale" Maske als erstes über das Werkzeug per Hand exportiert. Dann habe ich nach dem Script-Export also von NotesDXLExporter den String in eine Datei schreiben lassen.

Habe die Dateien verglichen mit DiffDog und sind beide gleich. Nach dem Import treten jedoch Formatierungsprobleme aus (Tabellengrößen ändern sich, Texte stehen woanders, Absätze wo eigtl. keine sind, uvm....). Habe die fehlerhafte Maske dann auch mal per Hand exportiert und verglichen.

Diese hat einen gewaltigen Unterschied zur Originalen. Wieso wandelt der Importer den Code um? Muss ich irgendwas noch beachten? Also zum Importieren benutz ich folgenden Code:

Code
Stream wird wieder importiert
Set stream = objSession.CreateStream 

'erzeuge Stream
Call stream.WriteText(strOut, EOL_CRLF) 

'schreibe String in Stream
Set dxl_importer = objSession.CreateDXLImporter(stream, objCurrentDB)
dxl_importer.DocumentImportOption = DXLIMPORTOPTION_REPLACE_ELSE_CREATE
dxl_importer.DesignImportOption = DXLIMPORTOPTION_REPLACE_ELSE_CREATE
dxl_importer.ReplicaRequiredForReplaceOrUpdate = False		
dxl_importer.InputValidationOption = 0 'VALIDATE_ALWAYS
		
Call dxl_importer.Process	
Call stream.Close

Was läuft dort falsch? Habe mit den DesignOptionen ein wenig rumgespielt, jedoch hat das keinen Unterschied gebracht. Hoffe jemand kann mir helfen! Danke!
Titel: Re: Problem mit dem Import von einem XML-Stream
Beitrag von: flaite am 19.07.08 - 11:55:19
Tja. Du bist nun auf das Phänomen der fehlenden, vollständigen Roundtrip-Fähigkeit von DXL gestossen  :-\
(try google: Roundtrip DXL)
IBM garantiert nämlich nicht, dass ein Notes-Note (Gestaltungselement oder Dokument) nach einem DXL-Reimport wieder genauso aussieht wie vor dem Export.
Die Probleme treten besonders bei Datenbanken mit eher chaotischen Tabellen (was im Designer leicht möglich ist) auf. Manchmal hilft es, wenn du die Tabellen oder auch PassThru-Html neu sauber im Designer nachbaust und die Maske ersetzt. In neueren Versionen 7 oder 8 wird das leicht besser. Ich geh aber davon aus, dass das Problem nie voll gelöst werden kann. Teile des Notes Formats sind einfach nicht unbedingt auf einen Reißbrett strukturiert worden, sondern haben sich gewissermassen spontan organisiert. Das hat Vor- und Nachteile und ging vermutlich nicht anders. Für Hobby-Analysten wie mich, die grundsätzlich an Fragen von spontaner Ordnung, Grenzen der Planbarkeit, Ökonomie von Planung, etc. viel Freude haben, macht das eine hohe Faszination aus. Für Problemlösungen in der realen Welt nervt mich das auch. Aber es ist so. Nicht deine Schuld. DXL ist quasi ein Echolot, das einen auf gewisse Phänomene des Notes-Formats aufmerksam macht. Schwächen wäre eine verkürzte Wertung. Z.B. ist auch das Verhalten WIE das Gestaltungs-Element DatabaseScript kompiliert wird, aus verschiedenen anders als man zunächst von aussen erwartet.
Der Re-Import von Notes-Ansichten macht viel weniger Probleme, einfach weil Ansichten von der Daten-Struktur her wesentlich weniger komplex ist als Notes-Masken.
Titel: Re: Problem mit dem Import von einem XML-Stream
Beitrag von: Binser am 21.07.08 - 08:42:28
Vielen Dank für deine Antwort! Dann muss ich wohl bis zur v8.5 warten. Wenigstens weiß ich nun, dass das Problem nicht an mir liegt. Danke nochmals!
Titel: Re: Problem mit dem Import von einem XML-Stream
Beitrag von: flaite am 21.07.08 - 11:28:10
Dann muss ich wohl bis zur v8.5 warten.
v8.5 wird das Problem auch nicht lösen. Hab ich oben geschrieben.
Titel: Re: Problem mit dem Import von einem XML-Stream
Beitrag von: Binser am 23.07.08 - 15:22:14
Habe ich irgendwo auf den ersten Seite bei der Google Suche (Roundtrip DXL) gelesen. :-). Außerdem hast du nur v8 genannt ;). Trotzdem thx nochmal