XQuery:插入节点

时间:2010-05-24 23:15:24

标签: xquery

我正在使用XQuery读取XML文件,并希望插入多个节点/元素并生成新的XML文件。我怎么能做到这一点?

我尝试过使用replace()函数,但是,当我调用doc()加载文档时,看起来我的所有XML标记都被剥离了。因此,如果我的XML标记被删除,则调用replace()并不是一件好事。

有任何帮助吗?我还可以使用其他技术吗?

4 个答案:

答案 0 :(得分:4)

允许更新的XQuery语言扩展 - XQuery更新工具 - 允许修改文档。

插入节点如下所示:

insert node <foo>bar</foo>
  into /bar//baz[id='qux']

在其他引擎中,这是supported by BaseX

请参阅http://www.w3.org/TR/xquery-update-10/

答案 1 :(得分:1)

使用XQuery Scripting,您可以编写如下程序:

variable $stores := doc("stores.xml")/stores;

insert node element store { 
  element store-number { 4 },
  element state { "CA" }
} into $stores;

$stores

您可以在http://www.zorba-xquery.com/html/demo#vpshT+pVURyQSCEOKrFBrF0jyGY=

现场试试这样的示例

答案 2 :(得分:0)

replace()是一个字符串操作,因此XML将在替换之前转换为字符串。

要创建原始文件的修改副本,您可以修改身份转换,以递归方式复制原始文件以在需要时插入新节点 - 请参阅XQuery Wikibook

中的文章

或者,如果文件位于XML数据库(如eXist)中,则可以使用更新操作在原位插入元素。

答案 3 :(得分:0)