7.1.3 - Resultats de sentències XQuery
Aquestes són les classes que utilitzarem per accedir a les dades:
XQExpression o XQPreparedExpression
Són objectes creats a partir de la connexió per a l'execució d'una expressió (sentència) XQuery. Ja sabem que XQuery inclou XPath, per tant també podem posar senzillament una expressió XPath.
XQExpression serveix per a executar sentències de forma immediata, si volem una darrere de l'altra. XQPreparedExpression serveix més per a preparar-les, exactament igual que amb els Statement de JDBC per a BD Relacionals.
Mentre que per a XQExpression no declarem la sentència en el moment de crear-la, sinó posteriorment amb executeQuery(sentència) passant-li la sentència, en XQExpression declarem la sentència en el moment de crear-la, i després només restarà executar-la (sense passar-li-la com a paràmetre amb executeQuery().
En ambdós casos el resultat vindrà en un XQResultSequence.
XQResultSequence
Arreplega el resultat de l'execució d'una sentència per qualsevol dels mètodes anteriors. Contindrà un conjunt de 0 o més XQResultItem.
És un objecte que es pot recórrer. Veja'm un exemple, on per a obtenir l'element del ResultSequence utilitzem el mètode getItemAsString(null) per a convertir-lo tot sencer en string. Primer utilitzem XQPreparedExpression:
I ara anem a canviar la consulta per veure com queda amb XQExpression:
...
En els programes anteriors hem buscat en un únic document, classe.xml, posant-li la ruta. Com que per a posar el nom i ruta del document fan falta les cometes ", ens ha tocat "escapar-les" amb la contra-barra. Si no posàrem el document, ja sabem que eXist buscaria en totes les col·leccions.
XQResultItem
Representa un element d'un resultat. Ja hem vist que el XQResultSequence el podem recórrer, però si volem treballar millor o de forma més completa amb cada element, podem passar-lo al XQResultItem. El mateix exemple d'abans quedaria:
Llicenciat sota la Llicència Creative Commons Reconeixement NoComercial CompartirIgual 2.5