[JAVA][XML]connexion a une bd Exist

Voila, tout est dans le titre quasiment. J’ai des servlets, et j’aimerais faire des requetes sur une base de données Exist, mais j’ai aucune idée de comment proceder. Les infos sur le net sont inexistantes, et les API sur le site d’Exist sont foireuses, tous les liens sont mort…
Quelqu’un y est deja arrivé ?

Il n’y a pas de driver JDBC ?

bon c’est vrai c’est pas évident avec juste la doc sur le site officiel…

Pour la connexion à la base de donnée, tu peux faire qqchose comme ça :

[code]String dbDriver = “org.exist.xmldb.DatabaseImpl”;
String dbConnection = “xmldb:exist://localhost:8080/exist/xmlrpc/db”;
String dbLogin = “admin”;
String dbPassword = “blah”;

Class cl = Class.forName(dbDriver);
Database database = (Database)cl.newInstance();
DatabaseManager.registerDatabase(database);

Collection col = DatabaseManager.getCollection(dbConnection,dbLogin,dbPassword);

XPathQueryService service = (XPathQueryService) col.getService(“XPathQueryService”, “1.0”);

// et une petite requete :
String query = /* une jolie requete …*/
ResourceSet resultQuery = service.query(query);[/code]

Voila, ça devrait pouvoir t’aider B) !

Yeah ! Merci beaucoup floledino ! Je vais tester ca. Si ca marche pas, je vais foutre une bombe chez toi B)

J’ai bien fait d’installer un abri B) anti-atomique :smiley: chez moi ! :stuck_out_tongue:

Tu va voir eXist c’est hachement bien notamment au niveau des requetes, c’est très souples d’utilisation, tu peux utiliser du XQuery, Xupdate, etc…

Moi j’utilise FLWR (qui fait parti de XQuery) et qui fait des jolies requetes SQL-like du style :

for $x in /DesignPattern where $x/General/Name/text() return $x

après tu peux traiter le résultat assez facilement en récupérant le ResourceSet. Par exemple en lisant le contenu directement sous forme de String :

ResourceIterator i = resultQuery.getIterator(); while(i.hasMoreResources()) { Resource r = i.nextResource(); String str = (String)r.getContent(); results.add(str); }

ou alors en utilisant DOM4J pour parser ton résultat en XML :

[code] for(int l = 0; (long)l < set.getSize(); l++) {

XMLResource res = (XMLResource)set.getResource(l);
String docId = res.getDocumentId();
String XMLContent  = res.getContent().toString();
InputSource source = new InputSource(new StringReader(patternContent));
SAXReader saxReader = new SAXReader();
	
Document document = saxReader.read(source);
 
Element root = document.getRootElement();
// récupère le nom
String name = "";
Node nameNode = root.selectSingleNode("General/Name");
if(nameNode != null){
  name = nameNode.getStringValue();
}

}[/code]

Me voila comblé. Merci beaucoup pour ton aide.
Si jamais j’ai d’autre problèmes avec eXist je sais à qui demander B)