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

标签 java xml xquery saxon

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

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() 时,结果序列中的当前项必须是原子值,否则会引发异常(它不会原子化结果)。所以我希望这会抛出异常。

关于java - 使用 net.sf.saxon.Query 从 Java 程序运行 saxon xquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15683223/

相关文章:

java - 验证时遇到问题 : infinite loop occurs even though the logic seems fine

java - 是否可以使用 Gson.fromJson() 来获取 ArrayList<ArrayList<String>>?

xml - 没有前缀的 XSD 无效

xml - BaseX:更新不会写回

xml - 如何在xquery中通过变量选择属性?

java - 检查 count 是否在每一千之后包含 ,

java - Spring 与否 Spring : should we create a @Component on a class with static methods?

java - Java 中带有 xml 的 GUI

xml - 如何使用 XSL 转换管道或两阶段转换

javascript - 如何在MarkLogic中制作动态搜索应用程序?