Autor Thema: Wie Daten aus XML einlesen?  (Gelesen 2442 mal)

Offline g202e

  • Senior Mitglied
  • ****
  • Beiträge: 361
  • Geschlecht: Männlich
  • Was nicht tötet, härtet ab!
Wie Daten aus XML einlesen?
« am: 10.05.04 - 14:27:04 »
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!?) ???
Domino 5.0.11/LN 5.011(german)/NT4 + SP6a

Hernan Cortez

  • Gast
Re:Wie Daten aus XML einlesen?
« Antwort #1 am: 10.05.04 - 17:02:35 »
In Domino5 geht das nur mit Java (etwa Java Agent)

ich soll jetzt Daten aus einem Fremdsystem in eine bestehende Datenbank integrieren. Über das andere System weiß ich so gut wie nichts.
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.  

Die Daten bekomme ich im XML-Format (je eine Datei.xml und eine Datei.dtd);
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.  ;)

Sicher hat jemand sowas schon gemacht?
Ja. Ich.

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!?) ???
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.  
« Letzte Änderung: 10.05.04 - 17:04:29 von El tio loco »

Hernan Cortez

  • Gast
Re:Wie Daten aus XML einlesen?
« Antwort #2 am: 10.05.04 - 18:00:54 »
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

  • Gast
Re:Wie Daten aus XML einlesen?
« Antwort #3 am: 10.05.04 - 18:40:45 »
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

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re:Wie Daten aus XML einlesen?
« Antwort #4 am: 10.05.04 - 18:49:16 »
Zitat
Es ist eines der schlechtesten Redbooks, das ich kenne.
<spass>
Du wagst es, Bücher zu empfehlen, von denen du nicht selber überzeugt bist  ;D
</spass>

kAe

Ulrich
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Hernan Cortez

  • Gast
Re:Wie Daten aus XML einlesen?
« Antwort #5 am: 10.05.04 - 19:28:37 »
Zitat
Es ist eines der schlechtesten Redbooks, das ich kenne.
<spass>
Du wagst es, Bücher zu empfehlen, von denen du nicht selber überzeugt bist  ;D
</spass>

Geschmäcker sind eben verschieden.
 
"Normale" Literatur zu DOM und SAX Api mit Java beruhen seit 1999 auf dem JAXP Standard. Deshalb eignen die sich nicht so gut.
Bessere Erklärungen finden sich vermutlich in neuerer Literatur zu Domino Entwicklung. Etwa bei Rocky Oliver oder Tamura (dessen Buch find ich btw. auch nicht das Gelbe, ist aber zu Domino5).
Vielleicht hilft auch ein search in notes.net aka developerworks/Lotus zu xml4j.
Das Redbook wurde übrigens auch mehrfach in den Foren auf Notes.net kritisiert. Erst wird seitenweise erzählt, dass xml ja quasi von Domino abgekupfert ist und dann fehlt eine Menge zu dem Thema, xml in Domino einzusetzen.  

Der König der Internetseiten zu xml und Java ist btw:
http://www.cafeconleche.org/ von Elliotte Rusty Harold.
Unter Books gibt es mit "Processing XML with Java" ein ganzes Buch zum kapitelweisen download. Es ist meine Lieblingsressource zu xml-Programmierung mit Java. Aber wie gesagt mit JAXP Standard.

Gruß Axel

Offline g202e

  • Senior Mitglied
  • ****
  • Beiträge: 361
  • Geschlecht: Männlich
  • Was nicht tötet, härtet ab!
Re:Wie Daten aus XML einlesen?
« Antwort #6 am: 11.05.04 - 10:10:54 »
Danke für die rege Diskussion.
Zu der kann ich erstmal nicht viel beitragen, denn Java ist für mich eine Insel(glaub ich zumindest!).
Ich habe den ganzen Tag im Net gesucht und habe u. a. diesen Artikel gefunden:http://lotusadvisor.com/doc/04857
Wenn ich das richtig verstehe, ist da beschrieben, wie man auch ohne Java in R5 mit XML arbeiten kann.
Das scheint mir die für mich prädestinierte Methode zu sein.
Aber nochmal die Nachfrage: Das geht doch ohne Java?
Domino 5.0.11/LN 5.011(german)/NT4 + SP6a

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz