如何在XQuery中获取含子元素标签的XML元素字符串值(MarkLogic)
在MarkLogic中用XQuery保留子元素标签获取XML元素内容
要保留XML元素的子元素标签并以字符串形式返回,不能使用xs:string()(它只会提取纯文本内容),可以使用MarkLogic内置的xdmp:quote()函数,它能将节点序列化为包含标签的字符串。
示例实现
假设你有如下XML元素:
<text_element> This <p>is</p> random <b> text </b> </text_element>
对应的XQuery代码:
let $text_element := /text_element return xdmp:quote($text_element/node())
执行后会返回你需要的结果:This <p>is</p> random <b> text </b>
补充说明
$text_element/node()用于获取目标元素下的所有子节点(包括文本节点和子元素节点),避免把<text_element>本身的标签也包含进去。- 如果需要自定义序列化规则(比如缩进、字符编码、是否保留注释等),可以给
xdmp:quote()传递第二个参数,传入序列化选项,例如:xdmp:quote($text_element/node(), map:entry("indent", "yes"))
内容的提问来源于stack exchange,提问作者Alux
相关产品推荐
相关产品推荐

