我了解如何使用 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/