XQuery:返回元素的值而不是元素本身

时间:2009-07-20 18:51:37

标签: xml xquery

我有一个包含以下内容的XML文档

...
<foo>abc</foo>
...

如果我评估

return $xml//foo

我回来了

<foo>abc</foo>

有没有办法让abc代替?{/ p>

5 个答案:

答案 0 :(得分:27)

是的,您需要text()函数来选择子文本:

return $xml/text()

如果你在$ xml中有嵌套的标记结构,请注意,因为这只会对文本节点有一个深度。如果你想要将所有文本节点放在一起,去掉其他XML结构,这将是任意深入的:

return $xml//text()

答案 1 :(得分:16)

使用字符串函数获取节点的字符串内容。

return string($xml)

答案 2 :(得分:8)

要仅返回您可以使用的元素内的数据:

return data($xml)

答案 3 :(得分:0)

转换为xs:string {xs:string($xml/foo)}

答案 4 :(得分:0)

OSB(oracle服务总线)用户可以使用以下功能。

fn-bea:serialize($xml)