Query contra dbXML que no sale ni patrás.

pixdivision
22 de Junio del 2004
Hola ,escribo pidiendo ayuda puesto que llevo ya dos dias dandole vueltas al asunto sin encontrar el fallo:

Tengo instalada una base de datos dbXML con una coleccion llamada "PROYECTO, dentro de la cual hay un archivo XML llamado "CLIENTES.XML". Este archivo contiene lo siguiente:
<?xml version="1.0" encoding="UTF-8" ?>
<CLIENTES>
<CLIENTE ID="1" NIF="75237110Q" NOMBRE="ALFREDO" APELLIDOS="PEREZ-DOBON BATLLES" TELEFONO="950270308" />
</CLIENTES>

A continuación escribo una clase en Java con el siguiente código, que se supone debería entregarme un ResultSet con el único nodo CLIENTE que existe. El caso es que no he conseguido de ninguna manera que me dé otro resultado que no sea -1 , o lo que es lo mismo, que no devuelva ningun nodo. Este es el código java:

public static void main(String[] args) {

String nombreBd="/PROYECTO";
String consulta="CLIENTES/CLIENTE[@ID='1']"

//Nuevo cliente para dbXML
dbXMLClient cliente = new dbXMLClientImpl();

//Contraseña y usuario para este cliente
cliente.setProperty(dbXMLClient.USER,"scott");
cliente.setProperty(dbXMLClient.PASS,"tiger");

/*Establezco la conexion y obtengo un cliente para mi colección "PROYECTO". Se que funciona */
cliente.connect();
CollectionClient coleccion = cliente.getCollection(nombreBd);

/*Aquí simplemente muestro por pantalla el fichero XML que quiero analizar para estar seguro de que puedo acceder a el, Se que funciona*/
System.out.println(coleccion.getDocumentAsText("CLIENTES.XML"));

//Obtengo un ResultSet
HashMap nsMap = new HashMap();
ResultSetClient rs = coleccion.queryDocument("XPath",consulta,nsMap,"CLIENTES.XML");

/*Visualizo el Resultset, aquí es donde me llevo la sorpresa! , que va y me dice que NULL !! */
System.out.println(rs.getResultAsText());
}

He probado con un monton de posibles consultas, pero invariablemente me dice siempre que NULL y que NULL. La verdad, me siento un poco estúpido.

POR FAVOR, POR LA VIRGEN DE LA DOLOROSA Y TODAS LAS DEMAS VIRGENES DE NOMBRES RAROS!!!, Alguien podría indicarme que es lo que he hecho yo para merecer esto??? Acaso debiera de hacerme jardinero???

Muchas gracias y un saludo a quien sea que lea esto..

rodrigo
22 de Junio del 2004
que db estas utilizando.
Si es algo sencillo para un proyecto pequeño te recomiendo eXist o Xindice.
Si me dices que db ocupas te podria ayudar un poco mas.

pixdivision
22 de Junio del 2004
Hola Rodrigo,
Estoy utilizando la base de datos dbXML 2.0 (la beta 3)

El caso es que he estado probando a ejecutar las querys tal y como yo creía que son a través de la utilidad de administración que esta base de datos, y funcionan correctamente, pero despues en el JBuilder 8 (que es donde compilo las clases Java) me devuelve null. Esta es la query que he puesto en la aplicación de administración:

<dbxml:xpath xmlns:dbxml="http://www.dbxml.com/db/query">
/CLIENTES/CLIENTE[@ID='1']
</dbxml:xpath>

Y esta la respuesta que me sirve:

<?xml version="1.0" encoding="UTF-8"?>
<query:results col="/PROYECTO" xmlns:query="http://www.dbxml.com/db/query">
<query:result key="CLIENTES.XML">
<CLIENTE APELLIDOS="PEREZ-DOBON BATLLES" ID="1" NIF="75237110Q" NOMBRE="ALFREDO" TELEFONO="950270308" />
</query:result>
</query:results>

Vamos, que funciona.

Despues he probado el el JBuilder a poner estas dos String para los querys:

1-La query exactamente tay y como la hago en el programa de administracion de dcXML2.0 (que se que sí funciona):

"<dbxml:xpath xmlns:dbxml='http://www.dbxml.com/db/query'>/CLIENTES/CLIENTE[@ID='1']</dbxml:xpath>"

2-Y solamente el XPath:

/CLIENTES/CLIENTE[@ID='1']

No me da ningún error de compilación en ninguno de los dos casos, pero como ya dije antes el ResultSet aparece vacio.

a ver si con esto se te ocurre algo, porque yo estoy pasmado,

Muchas gracias por tu ayuda!