Hallo!
Ich möchte eine Java-Anwendung zur Verwaltung von Schacht-Daten erstellen. Zur Speicherung der Daten möchte ich gerne die EXIST-Datenbank benutzen.
Ich hab diese jetzt als Servlet im Tomcat installiert. Funktioniert so weit auch ganz gut.
Hab ne Collection "schaechte" angelegt und zunächst von Hand ein XML-File "Schacht1.xml" reingeladen. Das funktioniert über das Webinterface sehr gut.
Jetzt wollte ich in Java das Dokument auslesen (wie im Retrieve-Beispiel von Exist).
Hier der Code:
Beim Ausführen aus Eclipse heraus bekomm ich dann folgende Fehlermeldung:
Das Programm läuft also bis zu dieser Zeile: XMLResource res = (XMLResource)col.getResource("Schacht");
Ich hab schon mehrere Varianten für die URI versucht. Aber immer kamen irgendwelche Exceptions.
Dann hab ich den Server mal als eigenständiges Programm installiert. Leider mit dem selben Ergebnis.
Mit dem Exist Admin Client kann ich wunderbar Querys auf meine Daten loslassen. Funktioniert so wie es soll.
Aber von Eclipse aus geht's einfach nicht.
Habt Ihr ein paar Tipps für mich? Ich verbringe schon viel zu viel Zeit mit diesem Problem.
Danke,
Barthi
Ich möchte eine Java-Anwendung zur Verwaltung von Schacht-Daten erstellen. Zur Speicherung der Daten möchte ich gerne die EXIST-Datenbank benutzen.
Ich hab diese jetzt als Servlet im Tomcat installiert. Funktioniert so weit auch ganz gut.
Hab ne Collection "schaechte" angelegt und zunächst von Hand ein XML-File "Schacht1.xml" reingeladen. Das funktioniert über das Webinterface sehr gut.
Jetzt wollte ich in Java das Dokument auslesen (wie im Retrieve-Beispiel von Exist).
Hier der Code:
Code:
import javax.xml.transform.OutputKeys;
import org.exist.storage.serializers.EXistOutputKeys;
import org.exist.xmldb.EXistResource;
import org.xmldb.api.DatabaseManager;
import org.xmldb.api.base.Collection;
import org.xmldb.api.base.Database;
import org.xmldb.api.modules.XMLResource;
public class Retrieve {
protected static String driver = "org.exist.xmldb.DatabaseImpl";
protected static String URI = "xmldb:exist://localhost:8080/db";
protected static void usage() {
System.out.println("usage: org.exist.examples.xmldb.Retrieve collection docName");
System.exit(0);
}
public static void main(String args[]) throws Exception {
String collection = "schaechte";
// initialize database drivers
Class cl = Class.forName(driver);
Database database = (Database) cl.newInstance();
database.setProperty("create-database", "true");
DatabaseManager.registerDatabase(database);
// get the collection
Collection col = DatabaseManager.getCollection(URI + collection);
col.setProperty(OutputKeys.INDENT, "yes");
col.setProperty(EXistOutputKeys.EXPAND_XINCLUDES, "no");
col.setProperty(EXistOutputKeys.PROCESS_XSL_PI, "yes");
XMLResource res = (XMLResource)col.getResource("Schacht");
if(res == null)
System.out.println("document not found!");
else {
System.out.println(res.getContent());
System.out.println("Size: " + ((EXistResource)res).getContentLength());
}
}
}
Beim Ausführen aus Eclipse heraus bekomm ich dann folgende Fehlermeldung:
Code:
Fatal error parsing XML: org.xml.sax.SAXParseException: end tag </head> does not match begin tag <meta>
Fatal error parsing XML: org.xml.sax.SAXParseException: end tag </td> does not match begin tag <img>
Fatal error parsing XML: org.xml.sax.SAXParseException: end tag </a> does not match begin tag <img>
Fatal error parsing XML: org.xml.sax.SAXParseException: end tag </td> does not match begin tag <a>
Fatal error parsing XML: org.xml.sax.SAXParseException: end tag </tr> does not match begin tag <td>
Fatal error parsing XML: org.xml.sax.SAXParseException: end tag </table> does not match begin tag <a>
Fatal error parsing XML: org.xml.sax.SAXParseException: attribute name not followed by '='
java.lang.NullPointerException
at org.exist.xmldb.RemoteCollection.getResource(RemoteCollection.java:290)
at Retrieve.main(Retrieve.java:39)
Exception in thread "main"
Das Programm läuft also bis zu dieser Zeile: XMLResource res = (XMLResource)col.getResource("Schacht");
Ich hab schon mehrere Varianten für die URI versucht. Aber immer kamen irgendwelche Exceptions.
Dann hab ich den Server mal als eigenständiges Programm installiert. Leider mit dem selben Ergebnis.
Mit dem Exist Admin Client kann ich wunderbar Querys auf meine Daten loslassen. Funktioniert so wie es soll.
Aber von Eclipse aus geht's einfach nicht.
Habt Ihr ein paar Tipps für mich? Ich verbringe schon viel zu viel Zeit mit diesem Problem.
Danke,
Barthi