我正在使用XQuery读取XML文件,并希望插入多个节点/元素并生成新的XML文件。我怎么能做到这一点?
我尝试过使用replace()函数,但是,当我调用doc()加载文档时,看起来我的所有XML标记都被剥离了。因此,如果我的XML标记被删除,则调用replace()并不是一件好事。
有任何帮助吗?我还可以使用其他技术吗?
答案 0 :(得分:4)
允许更新的XQuery语言扩展 - XQuery更新工具 - 允许修改文档。
插入节点如下所示:
insert node <foo>bar</foo>
into /bar//baz[id='qux']
在其他引擎中,这是supported by BaseX。
答案 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)