2013-03-23 35 views
0


我想查询基于eXist数据库的文件。
通过一个简单的函数来显示文件,没有问题的内容:如何从java查询eXist db

XMLResource res = (XMLResource) col.getResource(resourceName); 
System.out.println(res.getContent()); 


但是当我尝试对发出请求是不可能的。

String xQuery = "for $x in doc(\"" + resourceName + "\")." + "return data($x)."; 
ResourceSet result = service.query(xQuery); 
ResourceIterator i = result.getIterator(); 



我有以下错误:

Exception in thread "main" org.xmldb.api.base.XMLDBException: Failed to invoke method queryP in class org.exist.xmlrpc.RpcConnection: org.exist.xquery.StaticXQueryException: exerr:ERROR org.exist.xquery.XPathException: exerr:ERROR err:XPST0003 in line 1, column 58: unexpected token: . 

at org.exist.xmldb.RemoteXPathQueryService.query(RemoteXPathQueryService.java:114) 
at org.exist.xmldb.RemoteXPathQueryService.query(RemoteXPathQueryService.java:71) 
at ExistAccess.main(ExistAccess.java:45) 
Caused by: org.apache.xmlrpc.XmlRpcException: Failed to invoke method queryP in class org.exist.xmlrpc.RpcConnection: org.exist.xquery.StaticXQueryException: exerr:ERROR org.exist.xquery.XPathException: exerr:ERROR err:XPST0003 in line 1, column 58: unexpected token: . 

at org.apache.xmlrpc.client.XmlRpcStreamTransport.readResponse(XmlRpcStreamTransport.java:197) 
at org.apache.xmlrpc.client.XmlRpcStreamTransport.sendRequest(XmlRpcStreamTransport.java:156) 
at org.apache.xmlrpc.client.XmlRpcHttpTransport.sendRequest(XmlRpcHttpTransport.java:143) 
at org.apache.xmlrpc.client.XmlRpcSunHttpTransport.sendRequest(XmlRpcSunHttpTransport.java:69) 
at org.apache.xmlrpc.client.XmlRpcClientWorker.execute(XmlRpcClientWorker.java:56) 
at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:167) 
at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:158) 
at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:147) 
at org.exist.xmldb.RemoteXPathQueryService.query(RemoteXPathQueryService.java:99) 
... 2 more 
[[email protected]: Failed to invoke method queryP in class org.exist.xmlrpc.RpcConnection: org.exist.xquery.StaticXQueryException: exerr:ERROR org.exist.xquery.XPathException: exerr:ERROR err:XPST0003 in line 1, column 58: unexpected token: . 



我检查了我所有的.jar文件,以及所有的人都存在...我真的需要帮助!提前致谢!

+0

你是什么意思,“但是,当我试图反对提出请求不可能”?这没有意义。请编辑澄清。 – joewiz 2013-03-24 15:12:50

回答

1

您的疑问:

String xQuery = "for $x in doc(\"" + resourceName + "\")." + "return data($x)."; 

错误的核心:

err:XPST0003 in line 1, column 58: unexpected token: . 

随着错误消息状态,存在,但DB承认错误的”。 “;此期间/点是无效的XQuery。从查询中删除点,你应该没问题。查询文本本身应该是这样的:

for $x in doc("/db/mycollection/mydocument.xml") return data($x) 

此外,它出现在FLWOR循环遍历一个单一的项目 - 资源。因此,FLWOR是无关的。你可以将其重构为:

data(doc("/db/mycollection/mydocument.xml")) 
+0

非常感谢你,它完美的作品! 事实上,我正在测试GUI和点ca功能,所以我认为这是在java中相同的查询... ^^ 再次谢谢! – 2013-03-24 19:47:11

0

我想你字符串concat使这个问题,为什么不尝试在“。”后面添加一个空格。改变你的代码像

String xQuery = "for $x in doc(\"" + resourceName + "\"). " + "return data($x)."; 
+0

谢谢你的回答,但它不起作用。 – 2013-03-23 23:10:22