加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xml – 在初始创建后将元素添加/插入到Groovy MarkupBuilder对象

发布时间:2020-12-16 23:21:09 所属栏目:百科 来源:网络整理
导读:我理解如何使用MarkupBuilder在Groovy中创建 XML.在初始创建后如何向MarkupBuilder对象添加/插入元素?例如,从以下开始: def builder = new MarkupBuilder(writer) def items = builder.items{ item(name: "book") } 哪会产生: items item name="book/ /it
我理解如何使用MarkupBuilder在Groovy中创建 XML.在初始创建后如何向MarkupBuilder对象添加/插入元素?例如,从以下开始:

def builder = new MarkupBuilder(writer)
  def items = builder.items{
        item(name: "book")
  }

哪会产生:

<items> 
   <item name="book/> 
 </items>

我正在尝试创建一个可扩展的基本XML消息,使用核心类来包装构建器和继承以添加特定标记.基于上面的例子,这是我的基类:

Class ItemBuilder{
   def name;
   def builder = new MarkupBuilder(writer)
   public Object getXML(){
     def items = builder.items{
            item(name: this.name)
      }
     return items;
   }
}

这是一个示例扩展消息构建器:

Class SubItemBuilder extends ItemBuilder{
       def type;

       public Object getXML(){
         def items = super.getXML();
         //do something here to add a subitem child tag....
         return items;
       }
    }

如果我在JavaScript中使用JSON,我会做类似的事情:

items.item.subitem = "foo"

我最终希望SubItemBuilder.getXML生成:

<items> 
     <item name="book>
       <subitem type="paperback"/>
      </item>
 </items>

有没有简单的方法来实现这一目标?看起来像一个选项是子类MarkupBuilder并添加公共方法来插入子节点.有没有更好的方法来实现我正在寻找的结果?

解决方法

食谱示例使用 MarkupBuilder for Agile XML Creation显示了如何创建接近我需要的东西.

例如:

import groovy.xml.MarkupBuilder

def writer = new StringWriter()
def builder = new MarkupBuilder(writer)  

def subitem (builder){
    builder.subitem(type: "paperback")
}


def items = builder.items{
    item(name: "book")
    subitem(builder)
}

println writer.toString()?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读