Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Gandhi am 11.05.06 - 15:10:18

Titel: NotesDOMParser.process failed
Beitrag von: Gandhi am 11.05.06 - 15:10:18
Code
Function getadded(doc As notesdocument) As String
	
                Dim session as new notessession
	Dim dxl As String
	Dim exporter As NotesDXLExporter
	Set exporter=session.CreateDXLExporter(Doc)
	dxl=exporter.export
	
	
	Dim dom As NotesDOMParser
	Set dom=session.CreateDOMParser(dxl)
	dom.process

doc ist existent und somit enthält dxl auch gültige DXL.
Dennoch scheitert das ganze mit der o.g. lapidaren Fehlermeldung.
In meiner Noteshilfe steht, dass der NotesDOMParser Strings als Input akzeptieren müsste.
Ich vermute einen groben, vermutlich gar dummen Denkfehler und stehe vollkommen auf dem Schlauch und auch gefühlt endloses versuchen und suchen hat bisher nichts gebracht. Hilfe.
Titel: Re: NotesDOMParser.process failed
Beitrag von: Gandhi am 11.05.06 - 15:26:20
Ach ja, das Ding hat ja ein Log:
Code
<?xml version='1.0'?>
<DOMParserLog>
<fatalerror source='inpu' line='2' column='57'>An exception occurred! Type:XMLPlatformException, Message:Could not open file: xmlschemas\domino_6_5_4.dt</fatalerror>
<error>DOM parser operation failed</error>
</DOMParserLog>

Und nun die Preisfrage:
Wie kann es sein, dass Notes eine dtd, die es zuvor zum Erstellen benutzt hat, beim Lesen nicht mehr öffnen kann...???? >:(
Titel: Re: NotesDOMParser.process failed
Beitrag von: Gandhi am 11.05.06 - 15:28:45
Ausserdem steht im XML Quellfile nicht domino_6_5_4.dt, sondern domino_6_5_4.dtd - wie es ja auch richtig wäre...
Titel: Re: NotesDOMParser.process failed
Beitrag von: Gandhi am 11.05.06 - 15:31:22
Und einen hab ich noch: Zeile 2 hat überhaupt nur 55 Zeichen...

Hier der Anfang des DXL:
Code
<?xml version='1.0'?>
<!DOCTYPE document SYSTEM 'xmlschemas/domino_6_5_4.dtd'>
<document xmlns='http://www.lotus.com/dxl' version='6.5' maintenanceversion='4.0'
 replicaid='C1256F690050F2A6' form='Kontakt'>
<noteinfo noteid='a626' unid='47D4DA872DCD06CBC12571010060CAE5' sequence='107'>....
Titel: Re: NotesDOMParser.process failed
Beitrag von: eknori am 11.05.06 - 16:27:30
Du hast da einen kleinen Denkfehler: DOMParser verarbeitet zwar Strings, kann aber keine Quelle vom Typ STRING verarbeiten.

Lt. Designer Hilfe sind das

NotesDOMParser (pipelines from a NotesDOMParser object)
NotesDXLExporter (pipelines from a NotesDXLExporter object)
NotesRichTextItem
NotesSAXParser (pipelines from a NotesSAXParser object)
NotesStream
NotesXSLTransformer (pipelines from a NotesXSLTransformer object)

Du musst also die Ausgabe des exporters zunächst in einen Stream oder in ein RTFeld umleiten und diesen output als Input des DomParser verwenden ( mit SetInput methode des Parsers )

Oder du machst es über eine pipeline; der Exporter übergibt direkt an den Parser. Dann musst du aber deinen Code anders aufbauen.

Zum pipeline findest du hier ein Beispiel

http://atnotes.de/index.php?topic=30227.msg190852#msg190852
Titel: Re: NotesDOMParser.process failed
Beitrag von: Gandhi am 12.05.06 - 13:24:38
Damit ich jetzt nicht ganz so blöd dastehe : Auszug aus der NotesDesigner Help:
Zitat
Processor   Possible input objects   Possible output objects
NotesDXLExporter    NotesDatabase
   NotesDocument
   NotesDocumentCollection
   NotesNoteCollection   NotesStream
      NotesRichTextItem
      NotesDXLImporter
      NotesDOMParser
      NotesSAXParser
      NotesXSLTransformer
NotesDXLImporter    String
   NotesStream
   NotesRichTextItem
   NotesDXLExporter
   NotesDOMParser
   NotesSAXParser
   NotesXSLTransformer   NotesDatabase
NotesDOMParser
NotesSAXParser
NotesXSLTransformer   String
   NotesStream
   NotesRichTextItem
   NotesDXLExporter
   NotesDOMParser
   NotesSAXParser
   NotesXSLTransformer   NotesStream
      NotesRichTextItem
      NotesDXLImporter
      NotesDOMParser
      NotesSAXParser
      NotesXSLTransformer
Nicht, dass ich wirklich glauben würde, was da steht....
Dieses Dokument war auch eher versteckt (über XML Beispiele, Pipelining,...)
Aber ich habe die Vermutung (siehe auch den Log Eintrag meines Parsers), dass bei IBM Versucht wurde, ihm auch die Eingabemöglichkeit eines Strings mitzugeben und diese dann nicht richtig umgesetzt wurde und jetzt vom Lotus Quality Engineering 'bearbeitet' wird....
Anyway - Vielen Dank für Deine Hilfe - so werde ich es jetzt auch versuchen.
Titel: Re: NotesDOMParser.process failed
Beitrag von: Gandhi am 12.05.06 - 13:50:14
Neuer Code, alter Fehler... ???
Code
Function getadded(doc As notesdocument) As String
	Dim dom As NotesDOMParser
	Dim dxl As String
	Dim exporter As NotesDXLExporter
	Set exporter=session.CreateDXLExporter(Doc)
	
	Set dom=session.CreateDOMParser(exporter)
On Event PostDOMParse From dom Call domserialize

	exporter.process
	

 :-: