我有一个库,它使用回调到类中运行树状结构。一个简化的变体是:
class CallBack {
openGroup(name:String)
closeGroup(name:String)
item(name:String)
}
因此,openGroup向树中迈出一步,closeGroup向树中迈出一步,item为叶子。我想要做的是创建一个简单的xml结构当我运行代码时。一个天真的解决办法是简单地执行如下伪代码:
class CallBack {
var xml:String = ""
openGroup(name:String) = { xml += "<ol label=" + name + ">"}
closeGroup(name:String) = { xml += "</ol>" }
item(name:String) = { xml += "<li name=.... />" }
}
我想一个更好的解决方案是使用Node:s, Groups等来创建它。或其他相关技术,然后创建xml。
你知道如何以某种体面的方式从上面创建xml吗?
如果使用JATL,它将看起来像
class CallBack(writer: Writer) {
private val html = new Html(writer)
def openGroup(name:String) = html.ol.label(name)
def closeGroup(name:String) = html.end
def item(name:String) = html.li.label(name).end
}