当前位置: 首页 > 知识库问答 >
问题:

使用net.sf.saxon.查询从Java程序运行saxon xQuery

金阳曜
2023-03-14

我正在使用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();

我哪里做错了?此外,是否可能从字符串而不是文件中获得输入?

共有1个答案

裘嘉木
2023-03-14

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

 类似资料:
  • 我试图在scala jdbc程序上运行分析查询,如下所述。 该表位于postgres上,我正在创建程序的jar,并从命令行运行它,如下所示。 代码没有给出任何错误,但我看到resultset对象的结果为false,如下所示: 查询不会失败,因此在运行时没有异常。给定的表也存在于数据库中,它们包含数据。但是我打印了结果集对象,看到布尔值。这意味着分析查询失败了,还是应该以其他方式运行?可以让我知道我

  • 当我在查询浏览器和我的应用程序中运行相同的查询时,我会得到很大的时间差。查询浏览器运行查询只花了2秒。但在我的应用程序中,它需要20秒。实际上,我正在处理12L的记录。我使用的是sql server数据库,在我的应用程序中使用了本机sql(JDBC)API。我指的是natve语句和resultSet API来获取记录。我在这里复制了我的代码片段。 另外,我使用了相同的查询条件与相同的用户。 我的代

  • 我在elastic mapreduce上以交互模式运行了Hive: null 有人对我如何做到这一点有什么建议吗?

  • 问题内容: 我有一个Java程序,可以对sql服务器数据库运行一堆查询。其中第一个查询视图返回大约750k条记录。我可以通过sql server management studio运行查询,大约30秒后即可得到结果。但是,我从昨晚开始运行该程序。当我今天早上检查它时,大约15小时后,该查询仍未将结果返回给Java程序。 我可以访问数据库以执行几乎任何我想做的事情,但是我真的不确定如何开始调试它。人

  • 问题内容: 所以我在这里有一个菜鸟般的时刻,我以前从未使用过命令行来运行Java程序,但现在我需要。我遇到的问题是,当我尝试运行程序时,出现ClassNotFoundException。我的课叫做OmadUpdate。我已经使用javac命令将OmadUpdate.java文件编译为OmadUpdate.class。我已经检查了目录,并且它们都绝对存在,但是当我运行java OmadUpdate命

  • 我下载了一个java程序,它由两个文件夹src和classes组成,分别包含源文件和类文件。现在,src和classes文件夹包含几个嵌套的子文件夹,其中最后一个子文件夹分别包含源文件和类文件。更准确地说,源文件和类文件的路径是src/edu/univ/。java和classes/edu/univ/。班假设包含main函数的文件是main。java,如何从命令行运行此程序。 我尝试过: 我也尝试过