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 をサブクラス化し、パブリック メソッドを追加して子ノードを挿入するのが 1 つのオプションのようです。私が探している結果を達成するためのより良いアプローチはありますか?