XML-Datei aus dem Anhang einlesen

  • Hallo zusammen,


    ich möchte gerne einige Daten aus einer XML-Datei, die sich im Anhang einer Mail befindet auslesen.


    Bisher habe ich die Datei in einem Java-Agenten abgehängt, mittels SAX wieder eingelesen, in ein JDom-Dokument umgewandelt und mittels JDom die entsprechenden Tags ausgelesen.
    Das funktioniert lokal auch prima. Nur auf dem Server habe ich keine Schreibrechte. Daher muss ich das Abhängen der Datei umgehen.
    Ich dachte dabei an so etwas:


    if ( ( o.getType() == EmbeddedObject.EMBED_ATTACHMENT ) & (o.getSource().equals("anhang.xml") ) ) {
    DOMBuilder builder
    = new DOMBuilder("org.jdom.adapters.OracleV2DOMAdapter");
    jdomDoc = builder.build( o.parseXML( false ) );
    }


    Allerdings bekomme ich da einen Fehler:
    java.lang.NoSuchMethodError: org.w3c.dom.Node: method getNamespaceURI()Ljava/lang/String; not found
    at org.jdom.input.DOMBuilder.buildTree(DOMBuilder.java:186)
    at org.jdom.input.DOMBuilder.buildTree(DOMBuilder.java:170)
    at org.jdom.input.DOMBuilder.build(DOMBuilder.java:135)
    at JavaAgent.NotesMain(JavaAgent.java:77)
    at lotus.domino.AgentBase.runNotes(Unknown Source)
    at lotus.domino.NotesThread.run(NotesThread.java:218)


    Kann mir da jemand weiterhelfen (auch wenn es wie es scheint ein Java-Problem ist)??? :-?


    Danke schonmal.


    Grüße
    Anja

    • Offizieller Beitrag
    Zitat

    Nur auf dem Server habe ich keine Schreibrechte. Daher muss ich das Abhängen der Datei umgehen.


    bevor Du da Klimmzüge machen musst, prüfe mal die Sicherheitseinstellungen des Agenten ... findest Du in der Eigenschaftsbox - 2. Reiter (der mit dem Schlüssel) - Laufzeit-Sicherheitsstufe festlegen.


    Wohin wird die Datei abgehängt auf eine lokale Platte des Servers oder auf ein Netzlaufwerk?


    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

    • Offizieller Beitrag

    ... und in der Sicherheitseinstellung vom Server hast Du auch Rechte einen Java-Agent auszuführen?


    Gruß
    Dirk

    • Offizieller Beitrag

    wie hast Du den Pfad angegeben mit Laufwerksbuchstabe:\Pfad\Dateiname oder mit \\ServerName\Freigabe\Pfad\Dateiname?


    Gruß
    Dirk

  • Ich schreib die Datei nach "System.getProperty("java.io.tmpdir")".


    Gibt es denn eine andere Möglichkeit innerhalb eines Java-Agenten das Notes-Temp-Verzeichnis herauszufinden?

    • Offizieller Beitrag

    hast Du mal versucht einen Pfad, der auf dem Server existiert, hart zu codieren?


    Gruß
    Dirk

    • Offizieller Beitrag

    mh ... sind es W32-Server, dann kannst Du es zum Testen nach C:\Temp oder nach c:\ schreiben. Vergiss nicht die Datei danach zu löschen.


    Entwickelst Du nicht auf einem Test-System?, dort sollten solche Experimente doch erlaubt sein.


    Gruß
    Dirk

  • Ich entwickel auf einem Testserver.
    Aber da hab ich die entsprechenden Rechte. Da hab ich Schreibrechte auf das Temp-Verzeichnis. Aber auf unseren produktiven Servern hab ich keine Schreibrechte. :roll:

    • Offizieller Beitrag
    Zitat

    Aber auf unseren produktiven Servern hab ich keine Schreibrechte.


    aber wenn das Teil vom Server ausgeführt wird, dann wird es mit dem Win-User (meist System-Account) ausgeführt unter dem der Domino läuft. Sollte michtwundern, wenn der Domino nicht ins Temp-Verz. wegschreiben kann.


    Gruß
    Dirk

  • Hallo,


    also ich hab gerade mal versucht direkt in C:/temp/ zu schreiben (mit Schreibrechten).


    Da bricht der Agent allerdings mit einem JVM-Fehler jetzt ab:
    Fehler: JVM: Versuch, den Java-Agent-Anhang auffzurufen, ist fehlgeschlagen.


    Was soll denn das sein???? *verzweifel*


    Grüße
    Anja

    • Offizieller Beitrag

    muss es nicht c:\temp\ sein?


    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

  • Dann wird vermutlich der Server keine Schreibrechte auf das Temp Verzeichnis haben.


    Kannst du dir statt des Anhangs auch die XML Datei als XML innerhalb des Body schicken lassen ?
    Dann kannst du daraus ohne Umweg übers Filesystem einen XML Parser drüberlaufen lassen

  • Die XML im Body ist etwas schwierig, da die Mail noch an diverse andere Systeme geht, für die der Body relevant ist.


    Kann man denn eine Datei aus dem Anhang ohne Abhängen in ein RichTextItem einlesen? Dann hätte ich die XML ja so, wie wenn sie im Body-Feld wäre?!


    Grüße Anja

  • Vieleicht ist problem in Java - JVM.


    An server ist andere version als client.


    Welche version hast du LN client und server?



    Probier mit


    EmbeddedObject.getReader

    IBM Certified Advanced Application Developer - Lotus Notes and Domino 6/6.5...............