Я понимаю, как создать XML в Groovy с помощью MarkupBuilder. Как добавить/вставить элементы в объект MarkupBuilder после первоначального создания? Например, начните с:Добавить/вставить элементы в объект Groovy 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;
}
}
Если бы я работал с JSON в JavaScript, я хотел бы сделать что-то вроде:
items.item.subitem = "foo"
я в конечном счете хочу SubItemBuilder.getXML генерировать:
<items>
<item name="book>
<subitem type="paperback"/>
</item>
</items>
Есть ли простой способ достичь этого? Похоже, что один из вариантов заключается в подклассе MarkupBuilder и добавлении общедоступных методов для вставки дочерних узлов. Есть ли лучший подход к достижению результата, который я ищу?
Я понимаю, что этот ответ довольно старый, но было бы полезно, если бы вы предоставили фрагмент кода, который решил вашу проблему. Страница, с которой вы связаны, довольно длинная и содержит в ней _lot_ кода. +1 для вашего Q и -1 для этого A. – nickdos
@nickdos Я добавил фрагмент кода – elevine