使用net.sf.saxon.Query从Java程序运行saxon xquery

使用net.sf.saxon.Query从Java程序运行saxon xquery,java,xml,xquery,saxon,Java,Xml,Xquery,Saxon,我使用的是Saxon 9.0.4,并且在Eclipse项目中包含了Home Edition jar。但是,每当我发出查询字符串时,都不会发生任何事情,也不会得到任何输出。当我从命令行使用以下命令时,我得到了正确的结果: java -cp saxon.jar net.sf.saxon.Query samplequery.xqy 我的问题是: doc("rcmdemo5.xml")/book/chapter 这是我使用的代码: XQDataSource xqds = new SaxonXQDat

我使用的是Saxon 9.0.4,并且在Eclipse项目中包含了Home Edition jar。但是,每当我发出查询字符串时,都不会发生任何事情,也不会得到任何输出。当我从命令行使用以下命令时,我得到了正确的结果:

java -cp saxon.jar net.sf.saxon.Query samplequery.xqy
我的问题是:

doc("rcmdemo5.xml")/book/chapter
这是我使用的代码:

XQDataSource xqds = new SaxonXQDataSource();
XQConnection conn = xqds.getConnection();
XQExpression expr = conn.createExpression();
String es = "doc(\"rcm.xml\")/book/chapter";
XQResultSequence result = expr.executeQuery(es);
while (result.next()) { 
    String str  = result.getAtomicValue();
    System.out.println("Product name: " + str);
}
result.close();
expr.close();
conn.close();
我哪里做错了?
另外,是否可以从字符串而不是文件中获取输入?

您的查询返回一个零个或多个元素节点的序列,根据您所说的,我假设它实际上是一个或多个。XQJ规范规定,当调用getAtomicValue时,结果序列中的当前项必须是原子值,否则会引发异常,而不会原子化结果。所以我希望这会引发一个异常