You need to enable JavaScript to run this app. 使用正则实现XML格式化:合并CDATA收尾行与对应标签行并匹配缩进
优惠活动
大模型
产品
解决方案
定价
更多

使用正则实现XML格式化:合并CDATA收尾行与对应标签行并匹配缩进

存量XML文件CDATA格式化正则实现方案

针对需要把独立换行的CDATA闭合标记]]>和相邻闭合标签合并、对齐缩进的需求,可通过以下匹配替换逻辑实现:

核心正则匹配规则

正则匹配需要精准识别跨三行的CDATA格式异常特征,拆分捕获段保证缩进可追溯,最终匹配表达式为:

^(\s*)<([\w:.-]+)[^>]*><!\[CDATA\[[\s\S]*?\n\s*\]\>\n\s*(</\2>)\s*$
  • 表达式需要开启全局匹配、多行匹配模式才能批量处理整个XML文件的内容
  • 捕获段说明:
    • 组1:对应起始标签所在行的前置缩进,作为后续合并行的对齐基准
    • 组2:带命名空间、特殊属性的起始标签名,通过反向引用保证匹配到的]]>和闭合标签是同一节点下的内容
    • 组3:和起始标签对应的完整闭合标签内容
    • 非贪婪匹配标记*?避免跨多个CDATA块出现错误匹配

替换逻辑

按照捕获段重排文本结构,替换格式为:

$1<$2><![CDATA[
  原CDATA段内部内容
$1]]>$3

替换后自动实现两个效果:

  • 原本独立占行的]]>不再单独换行,直接和后面的闭合标签拼在同一行
  • 整行缩进完全和对应起始标签的缩进保持一致,不需要手动适配不同嵌套层级的缩进值

效果验证

原始XML片段

<search>
  <query><![CDATA[
    testline1
    ]]>
  </query>
</search>

转换后格式

<search>
  <query><![CDATA[
    testline1
  ]]></query>
</search>

适配注意事项

  • 支持带命名空间的标签匹配,适配实际生产环境的XML标签格式
  • 不会修改CDATA段内部的原有换行和缩进,仅调整]]>标记和闭合标签的位置
  • 对无嵌套、独立行书写的CDATA块不会产生误匹配

内容的提问来源于stack exchange,提问作者S.J.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 03:45:08