gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 02:01:23 26 4
gpt4 key购买 nike

我了解如何使用 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 并添加公共(public)方法来插入子节点。是否有更好的方法来实现我正在寻找的结果?

最佳答案

食谱示例使用 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()​

关于xml - 在初始创建后将元素添加/插入到 Groovy MarkupBuilder 对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1469361/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com