XML-Datei finden und in LN-Datenbank einlesen

  • Hi!


    Ich habe eine neue Aufgabenstellung, wo mir aktuell der Lösungsansatz ein bißchen fehlt. Evtl. habt Ihr 'ne Idee oder Info, wo ich sowas finden kann...?


    Es gehen in einem bestimmten Pfad in unbestimmten Abständen XML-Dokumente ein. Diese haben auch immer dieselbe Struktur.
    Nun möchte ich, daß Notes folgendes tut:
    1) In regelmäßigen Abständen nachsehen, ob es neue Dokumente in dem Ordner gibt.
    2) die neuen xml-Dokumente in eine Notes-DB importieren und
    3) eine eMail verschicken, wenn es neue Dokumente gab.


    3: ist klar.
    1: weiß ich noch nicht so recht
    -- vielleicht jeweils die xml-Dateien in ein anderes Verzeichnis kopieren und jede verarbeitete Datei löschen (im Original- oder Kopie-Verzeichnis) :?:
    2: textdatei nach Tags durchsuchen und dann bis zum nächsten Tag auslesen? Oder gibt's da was einfacheres?
    -- habe da so ein langes Script bei searchdomino.techtarget.com gefunden.
    Vielleicht proibier ich mal, ob ich das verstehe... :pinch:


    Danke für ein paar Anregungen!

    LG Lotusfee
    Domino 9.0.1/ Notes 8.5.2 :-o


    "Wenn man keine Ahnung hat, einfach mal Fresse halten" (Dieter Nuhr)
    ... oder Jemand fragen, der sich mit sowas auskennt. (Gelbe Seiten)

    2 Mal editiert, zuletzt von lotusfee ()

    • Offizieller Beitrag

    zu 1.
    im Script kannst du mit dir ein Verzeichnis durchgehen. Dabei kannst Du auch eine Maske mitgeben.

    Code
    Dim pathName As String, fileName As String
    pathName$ = "c:\*.xml"
    fileName$ = Dir$(pathName$, 0)
    Do While fileName$ <> ""
       Print fileName$
       fileName$ = Dir$()
    Loop


    zu 2.
    es gibt noch 2 Parser (SAX und DOM).
    Da du die Dateien anscheinend nur einmal durchgehen willst und nicht darin navigieren, würde ich den SAXParser nehmen. Der ist auch nicht so speicherhungrig wie der DOMParser.
    Schau mal in der Hilfe unter NotesSaxParser und NotesDomParser nach, da gibt es auch Beispiele.



    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Hallo Dirk!


    Danke! Ich habe gelesen, daß man den DOM-Parser eher für einfache XML-Dateien nimmt und den SAX-Parser für komplexe....

    LG Lotusfee
    Domino 9.0.1/ Notes 8.5.2 :-o


    "Wenn man keine Ahnung hat, einfach mal Fresse halten" (Dieter Nuhr)
    ... oder Jemand fragen, der sich mit sowas auskennt. (Gelbe Seiten)

    • Offizieller Beitrag

    der DOM-Parser liest die vollständige XML-Datei in den Speicher ein. Der SAX-Parser geht die XML-Datei von oben nach unten durch und hält die XML-Datei nicht im Speicher vor.


    Aber Vorsicht, es gab eine 8.x-Version, wo der SAX-Parser den verwendeten Speicher nicht wieder freigegeben hat - blöd, wenn das Teil auf dem Domino läuft und der irgendwann mal meldet, das ihm der Hauptspeicher ausgeht.
    Damals habe ich dann umgestellt und selber geparst.


    Gruß
    Dirk

  • Hallo Dirk!


    Das Einlesen mit SAX-Parser funktioniert ganz gut. Allerdings habe ich gesehen, daß hier die Elemente auf verschiedenen Ebenen der XML-Datei gleich behandelt werden... ?(
    Gibt es eine strukturiertere Methode, als das einfache Einlesen der Datei?

    LG Lotusfee
    Domino 9.0.1/ Notes 8.5.2 :-o


    "Wenn man keine Ahnung hat, einfach mal Fresse halten" (Dieter Nuhr)
    ... oder Jemand fragen, der sich mit sowas auskennt. (Gelbe Seiten)

    • Offizieller Beitrag

    die strukturierte Methode ist dann der Dom-Parser.


    Gruß
    Dirk

  • Ich hatte es befürchtet...!

    LG Lotusfee
    Domino 9.0.1/ Notes 8.5.2 :-o


    "Wenn man keine Ahnung hat, einfach mal Fresse halten" (Dieter Nuhr)
    ... oder Jemand fragen, der sich mit sowas auskennt. (Gelbe Seiten)

  • Jetzt bekomme ich beim Parsen die Fehlermeldung :
    "<?xml version='1.0'?><DOMParserLog><fatalerror>An exception occurred! Type:XMLPlatformException, Message:Could not open file: CDA.xsd</fatalerror><fatalerror source='NotesInputSource' line='7' column='2'>Fatal error encountered during schema scan<...


    So sehen die ersten Zeilen der XML-Datei aus:
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="vhitg-cda-v3.xsl"?>
    <ClinicalDocument xmlns="urn:hl7-org:v3"
    xmlns:sciphox="urn::sciphox-org/sciphox"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="urn:hl7-org:v3 CDA.xsd"
    >

    LG Lotusfee
    Domino 9.0.1/ Notes 8.5.2 :-o


    "Wenn man keine Ahnung hat, einfach mal Fresse halten" (Dieter Nuhr)
    ... oder Jemand fragen, der sich mit sowas auskennt. (Gelbe Seiten)

    • Offizieller Beitrag

    da steht, dass der DOM-Parser die Datei CDA.xsd nicht finden konnte. Die Datei beschreibt, welche Tags, Attribute usw. verwendet werden dürfen. Der Parser braucht diese Beschreibungs-Datei.
    Also entweder die Datei besorgen und in das gleiche Verzeichnis wie die xml-Datei legen oder in der XML-Datei einen gültigen Pfad und Dateinamen angeben.


    Gruß
    Dirk

  • .. und dann findet er die nächste Datei nicht, und die nächste, und ....
    Vielleicht nehme ich doch den SAX-Parser und bastele mir eine Regel zur Erkennung der Tags :S

    LG Lotusfee
    Domino 9.0.1/ Notes 8.5.2 :-o


    "Wenn man keine Ahnung hat, einfach mal Fresse halten" (Dieter Nuhr)
    ... oder Jemand fragen, der sich mit sowas auskennt. (Gelbe Seiten)

    • Offizieller Beitrag

    also du musst irgendwie mitgeteilt bekommen haben, wie die xml-Datei aufgebaut ist. Normalerweise wird dies in einer DTD- oder XSD-Datei hinterlegt.
    Wenn du diesen Aufbau kennst kannst Du auch über den SAX-Parser die XML-Datei verarbeiten.


    Oder du schreibst dir selber einen Parser. Ist gar nicht so schwer, wenn du beachtest wie eine XML-Datei aufgebaut ist.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein