【问题标题】:XML Node value update with XQuery使用 XQuery 更新 XML 节点值
【发布时间】:2011-10-29 16:10:26
【问题描述】:

我在我的项目中使用 XQuery,并使用来自 JAVA 的 SAXON9 执行 XQuery。

这里的问题是,当我尝试更新节点值时,我遇到了异常。 我使用 XQuery 从 xml 文件中选择数据没有任何问题。我面临的唯一问题是通过 xquery 修改数据。

这是我的查询: 替换节点的值(对于 $fname in doc("D:/contacts.xml")/Directory/Contacts/Contact[@id='0045d6cd-2c79-4a8d-879b-e8b0b9bfd16e']/LastName return $fname) 用'foo'。

这是一个例外: javax.xml.xquery.XQException:路径表达式中出现意外的标记“替换值”。

谁能告诉我,我是否需要在 SAXON9 中进行任何配置设置才能成功执行上述查询。

听说xquery中有Update的配置设置。我如何在 SAXON 中做到这一点。

【问题讨论】:

    标签: java


    【解决方案1】:

    如果你没有使用 EE 版本,AFAIK 你就不走运了。

    要从 Java 启用更新,请使用 XQueryCompiler.setUpdatingEnabled() method

    从命令行使用update:on 开关。

    【讨论】:

    • 您好,感谢您的回复。我已经按照你的建议做了,但我仍然遇到同样的问题。您能否发送代码显示如何使用来自 JAVA 的 SAXON9ee 执行更新查询。
    • 这是我的代码有什么问题吗? XQDataSource ds = new SaxonXQDataSource(); XQConnection conn = ds.getConnection(); XQExpression expr = conn.createExpression(); String query = "替换节点的值 ....";独立上下文上下文 = 新独立上下文(); XPathEvaluator xPathEvaluator = new XPathEvaluator(); xPathEvaluator.setStaticContext(context);配置 conf = xPathEvaluator.getConfiguration();处理器进程=新处理器(conf); XQueryCompiler 编译器 = process.newXQueryCompiler(); compiler.setUpdatingEnabled(true); XQResultSequence 结果 = expr.executeQuery(query);
    • 真的看不懂,但你打电话给setUpdatingEnabled,所以那部分是正确的。你用的是EE版吗?
    【解决方案2】:

    使用其他一些开源但完整的 XQuery 更新实现(BaseX、MonetDB、Sedna)可能会更成功。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-29
      • 1970-01-01
      • 2013-05-24
      • 1970-01-01
      • 2016-01-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多