Groovy>嵌套映射到Xml
发布时间:2020-12-14 16:25:08 所属栏目:大数据 来源:网络整理
导读:我想在Groovy中将我的Map对象转换为Xml.我已经浏览了当前的例子,我认为这会简单得多! 我找到的所有样品,要么使用a MarkupBuilder to manually specify the fields,要么使用have a utility method到iterate over the tree.最令人发指的! 有什么我想念的吗?
我想在Groovy中将我的Map对象转换为Xml.我已经浏览了当前的例子,我认为这会简单得多!
我找到的所有样品,要么使用a 有什么我想念的吗?我可以简单地转换这些其他格式…… JsonOutput.prettyPrint(JsonOutput.toJson(map)) // json (map as ConfigObject).writeTo(new StringWriter()) // groovy new Yaml().dump(map,new StringWriter()) // yml 为什么我不能这样做? XmlUtil.serialize(map) (或者我如何将我的Map对象转换为Element / Node / GPathResult / Writable对象?) Groovy示例代码 def myMap = [ key1: 'value1',key2: 'value2',key3: [ key1: 'value1',key3: [ key1: 'value1',] ] ] 首选输出 <root> <key1>value1</key1> <key2>value2</key2> <key3> <key1>value1</key1> <key2>value2</key2> <key3> <key1>value1</key1> <key2>value2</key2> </key3> </key3> </root> 解决方法
你可以做:
import groovy.xml.* new StringWriter().with { sw -> new MarkupBuilder(sw).with { root { myMap.collect { k,v -> "$k" { v instanceof Map ? v.collect(owner) : mkp.yield(v) } } } } println sw.toString() } 要输出: <root> <key1>value1</key1> <key2>value2</key2> <key3> <key1>value1</key1> <key2>value2</key2> <key3> <key1>value1</key1> <key2>value2</key2> </key3> </key3> </root> 你可以调用我没知道的神奇方法(可能是因为属性,没有魔术贴图 – > xml转换可以在不知道所需输出结构的情况下完成) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |