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

如何使用Groovy XML API创建含分隔文本值的XML元素

Groovy 创建混合内容XML节点方法

直接用Groovy内置的groovy.xml.MarkupBuilder即可原生支持文本、子标签穿插的混合内容节点,不需要额外依赖,写法非常直观,只需要按照内容在XML里出现的顺序,依次写入文本节点和子标签即可,构建器会自动按顺序拼接内容,不会打乱结构。

示例1:生成基础混合内容节点

如果要生成文本被<b>标签分隔的核心p节点,也就是示例code标签里包裹的原始XML结构,代码如下:

import groovy.xml.MarkupBuilder

def stringWriter = new StringWriter()
def xmlBuilder = new MarkupBuilder(stringWriter)

xmlBuilder.p {
    // 输出子标签前的第一段文本
    mkp.yield 'This is really '
    // 输出嵌套的b子标签
    b 'important'
    // 输出子标签后的第二段文本
    mkp.yield ', ok?!'
}

println stringWriter.toString()

运行后输出结果:

<p>This is really <b>important</b>, ok?!</p>

示例2:生成给出的完整目标XML

如果要生成外层p包裹code标签、code标签内是转义后XML源码的结构,直接把要转义的字符串作为code标签的内容传入即可,MarkupBuilder会自动转义尖括号等特殊字符:

import groovy.xml.MarkupBuilder

def stringWriter = new StringWriter()
def xmlBuilder = new MarkupBuilder(stringWriter)

xmlBuilder.p {
    code('<p>This is really <b>important</b>, ok?!</p>')
}

println stringWriter.toString()

运行后输出的结果和目标XML完全一致:

<p><code>&lt;p&gt;This is really &lt;b&gt;important&lt;/b&gt;, ok?!&lt;/p&gt;</code></p>

注意事项

  • 不要把包含嵌套标签的整段内容作为普通字符串传入标签,否则所有尖括号都会被转义成普通文本,无法生成预期的嵌套子节点
  • mkp.yield是MarkupBuilder提供的专门输出纯文本节点的方法,混合内容场景下在子标签前后调用它传入对应文本即可,文本内的特殊字符会被自动合规转义
  • 除非明确需要输出原始XML片段,否则不要用mkp.yieldUnescaped方法,随意使用很容易生成不符合XML语法规范的非法结构

内容的提问来源于stack exchange,提问作者Dr. Jedi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:27:30