文章目录
一、创建 XmlNode 节点
- 一、创建 XmlNode 节点
- 二、管理 XmlNode 节点并将根节点转为 Xml 信息
- 三、完整代码示例
- 1、自定义 Xml 生成器 MyBuilderSupport
- 2、Xml 节点封装了 XmlNode
- 3、在 Groovy 脚本中生成 Xml 信息
在 class MyBuilderSupport extends BuilderSupport
类中维护一个 Map 集合 , 该 Map 集合用于存储 上一篇博客 【Groovy】自定义 Xml 生成器 BuilderSupport ( 构造 Xml 节点类 | 封装节点名称、节点值、节点属性、子节点 | 将封装的节点数据转为 Xml 字符串 ) 中封装的 XmlNode 节点 ;
该 Map 集合的 Key 是节点名称 , Value 是 XmlNode 节点的值 ;
/**
* Map 集合
* Key 为 节点的 name 名称
* Value 为 节点 XmlNode 对象
*/
def xmlNodes = [:]
createNode 方法 , 是创建节点的方法 , 此处可以创建 XmlNode 节点 , 并放入 Map 集合中 ;
@Override
protected Object createNode(Object name, Map attributes, Object value) {
println "创建节点 名称 : $name, 属性 : $attributes, 值 : $value"
xmlNodes.put(name, new XmlNode(name, value, attributes))
return name;
}
二、管理 XmlNode 节点并将根节点转为 Xml 信息
BuilderSupport#nodeCompleted 方法是节点关闭的回调方法 ;
方法原型如下 :
@Override
protected void nodeCompleted(Object parent, Object node) {
super.nodeCompleted(parent, node)
}
其中 Object node
是被关闭的节点 , Object parent
是被关闭节点的父节点 ;
节点关闭时 , 可以根据 Object node
参数获取该被关闭的节点
def currentXmlNode = xmlNodes[node]
如果该被关闭的节点有父节点 , 即 Object parent
参数不为空 , 则将该节点放入父节点 XmlNode 的 children 子节点集合中 ;
if (parent) {
// 该节点有父节点, 将该节点放入父节点的 children 集合中
xmlNodes[parent].children
关注
打赏
热门博文
- 【Android Gradle 插件】Gradle 自定义 Plugin 插件 ③ ( 自定义插件作用 | Android Gradle 插件的扩展 | 自定义 Extension 扩展 )
- 【Android Gradle 插件】Gradle 构建生命周期 ③ ( BuildListener 构建监听器 | TaskExecutionGraphListener 任务执行图监听器 )
- 【Android Gradle 插件】Gradle 构建生命周期 ② ( Gradle 类的添加构建生命周期监听器函数 | Gradle#addListener 函数 )
- 【Android Gradle 插件】Gradle 构建生命周期 ① ( 分析构建脚本 | 执行初始化配置 | 执行 Gradle 任务 | Project#beforeEvaluate 函数 )
- 【Android Gradle 插件】自定义 Gradle 任务 ⑨ ( 控制 Gradle 执行任务顺序 | Task#finalizedBy 函数 | 控制 Gradle 执行任务顺序示例分析 )
- 【Android Gradle 插件】自定义 Gradle 任务 ⑧ ( 控制 Gradle 执行任务顺序 | Task#shouldRunAfter 函数 | 三个函数使用场景对比 )
- 【Android Gradle 插件】自定义 Gradle 任务 ⑦ ( 控制 Gradle 执行任务顺序 | Task#dependsOn 函数 | Task#mustRunAfter 函数 )
- 【数学分析】集合 ① ( 集合概念 | 集合表示 | 常用的数集合 | 集合的表示 )
- 【数学分析】学科简介 ( 初等数学缺陷 | 微分与积分 | 学习数学分析的目的 | 数学分析与高等数学对比 )
- 【Android Gradle 插件】自定义 Gradle 任务 ③ ( Gradle 自定义任务创建方法 Project#task 函数 | Task#doFirst 函数用法 )