Java 使用XQuery更新XML节点值

Java 使用XQuery更新XML节点值,java,Java,我在项目中使用XQuery,并使用JAVA中的SAXON9执行XQuery 这里的问题是当我试图更新一个节点值时,我得到了一个异常。 使用XQuery从xml文件中选择数据没有任何问题。我唯一面临的问题是通过XQuery修改数据 这是我的疑问: 替换docD:/contacts.xml/Directory/contacts/Contact[@id='0045d6cd-2c79-4a8d-879b-e8b0b9bfd16e']中$fname的节点值/LastName返回$fname 用“foo”

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

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

这是我的疑问: 替换docD:/contacts.xml/Directory/contacts/Contact[@id='0045d6cd-2c79-4a8d-879b-e8b0b9bfd16e']中$fname的节点值/LastName返回$fname 用“foo”

这是一个例外: javax.xml.xquery.XQException:路径表达式中出现意外的令牌替换值

有人能告诉我,为了成功执行上述查询,我需要在SAXON9中添加任何配置设置吗


我听说xquery中有一个更新的配置设置。在撒克逊我该怎么做。

如果你没有使用EE版本,恐怕你运气不好

要从Java启用更新,请使用


在命令行中使用update:on开关。

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

您好,谢谢您的回复。我已经按照你的建议做了,但我还是遇到同样的问题。您可以发送代码,说明如何从JAVA使用SAXON9ee执行更新查询。这是我的代码,有什么错误吗?XQDataSource ds=新的SaxonXQDataSource;XQConnection conn=ds.getConnection;XQExpression expr=conn.createExpression;字符串查询=替换节点的值。。。。;独立上下文=新的独立上下文;xpatheevaluator xpatheevaluator=新的xpatheevaluator;xpatheevaluator.setStaticContextcontext;配置conf=xpatheevaluator.getConfiguration;处理器进程=新处理器Conf;XQueryCompiler编译器=process.newXQueryCompiler;编译器.setUpdatingEnabledtrue;XQResultSequence result=expr.executeQueryquery;我真的看不懂,但您正在调用setUpdatingEnabled,所以这部分是正确的。您使用的是EE版本吗?