Scala:使用回调以编程方式创建xml



我有一个库,它使用回调到类中运行树状结构。一个简化的变体是:

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
}

最新更新