26

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

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

如果我评估

return $xml//foo

我回来

<foo>abc</foo>

有什么办法可以abc代替吗?

4

5 回答 5

31

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

return $xml/text()

但是,如果您将在 $xml 中包含嵌套标记结构,请小心,因为这对于文本节点只会深入一层。如果你想把所有的文本节点放在一起,去掉其他 XML 结构,这将做任意深度:

return $xml//text()
于 2009-07-20T18:54:16.210 回答
19

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

return string($xml)
于 2009-07-21T13:39:24.450 回答
8

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

return data($xml)
于 2009-09-19T09:14:04.317 回答
0

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

于 2013-05-20T11:29:39.323 回答
0

OSB(oracle service bus)用户可以使用以下功能。

fn-bea:serialize($xml)

于 2014-12-15T10:22:58.303 回答