【发布时间】:2019-07-18 06:57:39
【问题描述】:
我想做这个改变
发件人:
〈aaa〉 bbbbbb 〈/aaa〉
收件人:
通过使用 MarkLogic、XQuery。
怎么做?
【问题讨论】:
我想做这个改变
发件人:
〈aaa〉 bbbbbb 〈/aaa〉
收件人:
通过使用 MarkLogic、XQuery。
怎么做?
【问题讨论】:
这可以使用xdmp:node-replace() 来完成
参考-xdmp:node-replace
HTH!
【讨论】:
最简单的做法是经常使用xdmp:node-replace。但是,这假设您要修改的数据已经在数据库的文档中,并且您没有对该文档执行任何冲突的更新。
当无法使用 xdmp:node-replace 时,下一个最佳选择是修改内存中的文档,然后将整个文档插入到数据库中。
修改内存中文档的最简单方法是使用XQuery Memory Operations library中的mem:replace。
在内存中修改文档的最高效方法是编写针对该文档结构优化的recursive descent tree。
【讨论】:
如果节点不在文档中,总是有幼稚的做法:
〈aaa〉 bbbbbb 〈/aaa〉 ! <bbb>{.}</bbb>
【讨论】:
XSLT 也内置在服务器中。
【讨论】:
xquery version "1.0-ml";
xdmp:document-insert("/test1.xml",
<root>
<child1>
<aaa>bbbbbb</aaa>
</child1>
</root>
);
doc("/test1.xml");
xdmp:node-replace(doc("/test1.xml")/root/child1/aaa,<bbb>bbbbbb</bbb>);
doc("/test1.xml");
【讨论】:
xdmp:node-replace(doc("/test1.xml")/root/child1/aaa,<bbb>{doc("/test1.xml")/root/child1/aaa/node()}</bbb>);