您当前的位置: 首页 >  ui

韩曙亮

暂无认证

  • 0浏览

    0关注

    1068博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Groovy】自定义 Xml 生成器 BuilderSupport ( 创建 XmlNode 节点 | 管理 XmlNode 节点并将根节点转为 Xml 信息 | 完整代码示例 )

韩曙亮 发布时间:2022-02-10 19:03:36 ,浏览量:0

文章目录
  • 一、创建 XmlNode 节点
  • 二、管理 XmlNode 节点并将根节点转为 Xml 信息
  • 三、完整代码示例
    • 1、自定义 Xml 生成器 MyBuilderSupport
    • 2、Xml 节点封装了 XmlNode
    • 3、在 Groovy 脚本中生成 Xml 信息

一、创建 XmlNode 节点

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             
关注
打赏
1663594092
查看更多评论
0.0496s