Domino 9 und frühere Versionen > Entwicklung

Wie Daten aus XML einlesen?

(1/2) > >>

g202e:
Hallo,
ich soll jetzt Daten aus einem Fremdsystem in eine bestehende Datenbank integrieren. Über das andere System weiß ich so gut wie nichts.
Die Daten bekomme ich im XML-Format (je eine Datei.xml und eine Datei.dtd); wovon ich bisher kaum Kennung habe. Ich habe mittels der Forum-Suche schon mal versucht, einen Überblick zu erhalten. Sicher hat jemand sowas schon gemacht?
Gibt es konkret auch Erfahrungen, solche Dateien automatisch zu verarbeiten?
Ich dachte da an einenScriptagenten, welcher die Dateien einlesen sollte und daraus dann Notes-Dokumente macht. Es geht dabei erstmal nur um reinen Text der dann in die entsprechenden Textfelder der zu generierenden Notes-Dokumente geschrieben werden soll.
Da ich so überhaupt keinen Plan habe: ??? Könnt Ihr mir da vielleicht auf die Sprünge helfen? (Codebeispiel wäre natürlich super!?) ???

Hernan Cortez:
In Domino5 geht das nur mit Java (etwa Java Agent)


--- Zitat von: g202e am 10.05.04 - 14:27:04 ---ich soll jetzt Daten aus einem Fremdsystem in eine bestehende Datenbank integrieren. Über das andere System weiß ich so gut wie nichts.

--- Ende Zitat ---
Für diesen Fall ist xml eine sehr gute Lösung. Eine der unbestrittenen Stärken von xml ist quasi gesprochen die Entkoppelung der Systemintegration von den Systemen selbst. D.h. wenn Du die Daten als xml bekommst, brauchst Du über das andere System nix zu wissen, sondern einfach nur Mechanismen schaffen, um die Daten aus dem xml auszulesen. Dafür gibt es standardisierte Mechanismen.*
Es ist relativ einfach.  


--- Zitat von: g202e am 10.05.04 - 14:27:04 ---Die Daten bekomme ich im XML-Format (je eine Datei.xml und eine Datei.dtd);

--- Ende Zitat ---
XML ist kein Format, sondern ein Meta-Format. XML ist nämlich ein Standard zur Definition von Formaten.
Das Format selber wird in der dtd bestimmt.  ;)


--- Zitat von: g202e am 10.05.04 - 14:27:04 ---Sicher hat jemand sowas schon gemacht?

--- Ende Zitat ---
Ja. Ich.


--- Zitat von: g202e am 10.05.04 - 14:27:04 ---Gibt es konkret auch Erfahrungen, solche Dateien automatisch zu verarbeiten?
Ich dachte da an einenScriptagenten, welcher die Dateien einlesen sollte und daraus dann Notes-Dokumente macht. Es geht dabei erstmal nur um reinen Text der dann in die entsprechenden Textfelder der zu generierenden Notes-Dokumente geschrieben werden soll.
Da ich so überhaupt keinen Plan habe: ??? Könnt Ihr mir da vielleicht auf die Sprünge helfen? (Codebeispiel wäre natürlich super!?) ???

--- Ende Zitat ---
XML Parsing geht erst unter 6 mit LotusScript. Mit 5 nur Java. Es sei denn du schreibst deinen eigenen xml-Parser mit LotusScript.
Du mußt erstmal das xml mit dem xml4j parsen (Paket ist bei Domino dabei, xml4j.jar). Dafür solltest du hier einige wertvolle Informationen finden (inklusive source code):
http://www.ibm.com/Search?v=11&lang=en&cc=zz&q=XML4J
Du solltest validierend parsen. Dh. der parser muss noch überprüfen, ob das xml der in der dtd definierten Format-Constraints entspricht.
Les dir ein paar von den Artikeln durch. Dort wird das beschrieben. Die ersten sahen ganz ok aus. Da ist auch source code.

Der Parser macht eigentlich die schwierige Arbeit für dich. Es gibt 2 verschiedene xml-Parser mit dem xml4j package in Domino5. Der DOM Parser ist für Anfänger meisst einfacher. Für den SAX Parser musst du ein bischen rekursiv denken. Wenn du wirklich sehr viele Datensätze verarbeitest, könntest du aber mit dem DOM Parser ein Arbeitsspeicherproblem bekommen (das du mit SAX nicht hast).
 
Für einen überblicksartigen Einstieg in xml empfehle ich: http://www.w3schools.com/

Wenn du im Domino Designer einen Java Agenten erstellst findest du in der Referenz links eine gewisse Api-Dok zum Thema und zwar genau dann, wenn du unter der Auswahl in der Selectbox links das mit der vielsagende Auswahl "org Java", nicht "Core Java" oder "Notes Java" triffst. Iris hat aber hier an den Beispielen gespart. Deshalb: http://www.ibm.com/Search?v=11&lang=en&cc=zz&q=XML4J

Wenn du die Daten mit xml geparst hast, kannst du damit Notes-Dokumente erzeugen. Das geht so ähnlich wie mit LotusScript.
Document doc = db.createDocument();
doc.replaceItemValue("form", myForm);
...etc...
doc.save (true, false);

Ich würde beim parsen die einzelnen Datensätze erstmal in Objekten einer JavaBean artigen Klasse speichern, diese in eine java.util.ArrayList zwischenspeichern und dann die in die ArrayList geparkten Objekte auslesen und damit Notes Dokumente erzeugen.

Gruß Axel


* Bei Lotus Notes leider ein bischen weniger , weil der dort selbst in Domino6 verwendete uralt Parser (xml4j) nicht dem JAXP Standard entspricht.  

Hernan Cortez:
gibt auch ein Redbook:
http://www.redbooks.ibm.com/redbooks/pdfs/sg246207.pdf

Kapitel 5 sollte für dich interessant sein. Es ist eines der schlechtesten Redbooks, das ich kenne.

Hernan Cortez:
Versuchs erstmal selber. Wenn du auf Probleme stösst, kann dir hier vermutlich weiter geholfen werden.

XML hat sich in den letzten Jahren stark verbreitet und wird sich in den nächsten Jahren noch weiter verbreiten.

Z.B. beruhen auch Webservices/SOAP 100% auf xml.

Deshalb ist es keine Zeitverschwendung, sich damit erstmal ein bischen selber abzuplagen.

Gruß Axel

eknori:

--- Zitat ---Es ist eines der schlechtesten Redbooks, das ich kenne.

--- Ende Zitat ---
<spass>
Du wagst es, Bücher zu empfehlen, von denen du nicht selber überzeugt bist  ;D
</spass>

kAe

Ulrich

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln