0


eXist データベースに基づいてファイルを照会しようとしています。
ファイルの内容を表示する簡単な機能を使用すれば、問題ありません。

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
[B@105081caorg.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: .



すべての .jar ファイルを確認したところ、すべて存在していました...本当に助けが必要です! 前もって感謝します!

4

2 に答える 2

1

あなたの質問:

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

エラーの核心:

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

エラー メッセージが示すように、eXist-db は「.」でエラーを認識します。このピリオド/ドットは無効な XQuery です。クエリからドットを削除すると、問題ありません。クエリ テキスト自体は次のようになります。

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

また、FLWOR ループが単一のアイテム (リソース) を反復しているようです。したがって、FLWOR は無関係です。これを次のようにリファクタリングできます。

data(doc("/db/mycollection/mydocument.xml"))
于 2013-03-24T15:21:21.310 に答える
0

string concat がこの問題を引き起こしていると思います。「.」の後にスペースを追加してみてください。コードを次のように変更します

    String xQuery = "for $x in doc(\"" + resourceName + "\"). " + "return data($x).";
于 2013-03-23T05:34:05.137 に答える