欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

【Groovy】xml 序列化 ( 使用 MarkupBuilder 生成 xml 数据 | 标签闭包下创建子标签 | 使用 MarkupBuilderHelper 添加 xml 注释 )

发布时间:2025/6/17 编程问答 51 豆豆
生活随笔 收集整理的这篇文章主要介绍了 【Groovy】xml 序列化 ( 使用 MarkupBuilder 生成 xml 数据 | 标签闭包下创建子标签 | 使用 MarkupBuilderHelper 添加 xml 注释 ) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

文章目录

  • 一、标签闭包下创建子标签
  • 二、使用 MarkupBuilderHelper 添加 xml 注释
  • 三、完整代码示例





一、标签闭包下创建子标签



在上一篇博客 【Groovy】xml 序列化 ( 使用 MarkupBuilder 生成 xml 数据 ) 生成的 xml 文件基础上 , 如果要在标签下 , 创建子标签 , 如下的 <team> 标签下再创建 <member> 标签 ;

<student><name code="utf-8">Tom</name><age>18</age><team><member>Jerry</member></team> </student>

在创建标签的闭包中 , 再次嵌套创建标签即可 ;

markupBuilder.student{// 标签下创建子标签team() {member("Jerry") {}} }

完整代码如下 :

// 生成上述 xml 文件 markupBuilder.student{// 格式如下 :// xml 标签名称( 标签内容 , 标签属性 : 标签属性值)// 生成标签内容 : 标签内容直接写上即可// 生成标签属性 : 标签属性使用键值对方式生成name("Tom", code: "utf-8") {}age(18) {}// 标签下创建子标签team() {member("Jerry") {}} }



二、使用 MarkupBuilderHelper 添加 xml 注释



在闭包中可以通过 mkp 获取 MarkupBuilderHelper 对象 , 该对象可以帮助添加 xml 注释 ;

/*** 属性,该属性可以从生成器闭包中调用以访问帮助器方法,* 即 {@link MarkupBuilderHelper#yield(String)},* {@link MarkupBuilderHelper#yieldUnescaped(String)},* {@link MarkupBuilderHelper#pi(Map)},* {@link MarkupBuilderHelper#xmlDeclaration(Map)} and* {@link MarkupBuilderHelper#comment(String)}.** @return this MarkupBuilder*/public MarkupBuilderHelper getMkp() {return new MarkupBuilderHelper(this);}

MarkupBuilderHelper 类中提供了一些方法 , 其中 comment 方法 , 可以用于添加注释 ;

public class MarkupBuilderHelper {private final MarkupBuilder builder;/*** 在输出中生成注释。* <p>* <code>mkp.comment 'string'</code> is equivalent to* <code>mkp.yieldUnescaped '&lt;!-- string --&gt;'</code>.* To create an element with the name 'comment', you need* to supply empty attributes, e.g.:* <pre>* comment('hello1')* </pre>* or* <pre>* mkp.comment('hello1')* </pre>* will produce:* <pre>* &lt;!-- hello1 --&gt;* </pre>* while:* <pre>* comment('hello2', [:])* </pre>* will produce:* <pre>* &lt;comment&gt;hello2&lt;/comment&gt;* </pre>** @param value the text within the comment.*/public void comment(String value) {yieldUnescaped("<!-- " + value + " -->");} }

在闭包中使用 mkp.comment("学生姓名") 代码 , 可以生成 <!-- 学生姓名 --> 注释 ;

markupBuilder.student{mkp.comment("学生姓名") }



三、完整代码示例



完整代码示例 :

import groovy.xml.MarkupBuilder""" <student><name code="utf-8">Tom</name><age>18</age><team><member>Jerry</member></team> </student> """def fileWriter = new FileWriter(new File("a.xml"))// 创建 MarkupBuilder 对象 // 构造函数中传入 FileWriter 表示将 xml 文件写出到文件中 def markupBuilder = new MarkupBuilder(fileWriter)// 生成上述 xml 文件 markupBuilder.student{// 格式如下 :// xml 标签名称( 标签内容 , 标签属性 : 标签属性值)// 生成标签内容 : 标签内容直接写上即可// 生成标签属性 : 标签属性使用键值对方式生成name("Tom", code: "utf-8") {}mkp.comment("学生姓名")age(18) {}mkp.comment("学生年龄")// 标签下创建子标签team() {member("Jerry") {}}mkp.comment("小组成员") }

执行结果 :

<student><name code='utf-8'>Tom</name><!-- 学生姓名 --><age>18</age><!-- 学生年龄 --><team><member>Jerry</member></team><!-- 小组成员 --> </student>

总结

以上是生活随笔为你收集整理的【Groovy】xml 序列化 ( 使用 MarkupBuilder 生成 xml 数据 | 标签闭包下创建子标签 | 使用 MarkupBuilderHelper 添加 xml 注释 )的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。