You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在XQuery中去除节点内的回车与换行符?

如何去除XML节点内所有回车换行符?

问题场景

现有XML结构:

<test>
  ...
  <text>
  ABC
  </text>
  ...
</test>

期望得到:

<text>ABC</text>

尝试过的代码及问题

已尝试以下XQuery代码:

let $data := 
<test>
  <text>
  ABC
  </text>
</test>
let $test := $data/text
return replace($test,"&#xA;","")

但得到的结果是:

<text>
ABC</text>

仅去掉了部分换行,节点内仍有多余的空白和换行。

解决方案

方法1:使用normalize-space()处理文本内容

normalize-space()会自动去除字符串前后的所有空白字符(包括换行、回车、空格、制表符),并将中间的多个空白替换为单个空格,适配当前场景:

let $data := 
<test>
  <text>
  ABC
  </text>
</test>
let $clean-text := normalize-space($data/text)
return element text { $clean-text }

方法2:使用replace()匹配所有空白字符

通过正则表达式匹配所有空白字符(\s包含换行、回车、空格、制表符等)并替换为空,实现精准清理:

let $data := 
<test>
  <text>
  ABC
  </text>
</test>
let $clean-text := replace($data/text, '\s+', '')
return element text { $clean-text }

方法3:使用translate()批量替换指定字符

针对换行(&#xA;)、回车(&#xD;)和空格,直接批量替换为空:

let $data := 
<test>
  <text>
  ABC
  </text>
</test>
let $clean-text := translate($data/text, concat(xs:string(xs:hexBinary("0D")), xs:string(xs:hexBinary("0A")), " "), "")
return element text { $clean-text }

以上方法均可得到期望的<text>ABC</text>结果。

内容的提问来源于stack exchange,提问作者Ra1nForest

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 21:45:38