我需要帮助在Groovy中将xml转换为json。我有的xml是这样的
def xmlrecords = '''<root>
<node1>abc</node1>
<node2>def</node2>
<node3>hij</node3>
</root>'''
我知道这很简单,但我很难接受groovy。所以任何帮助都会非常感激。
感谢。
更新
我知道我可以做类似
的事情def xml= new XmlParser().parseText( xmlrecords )
def json = new JsonBuilder()
json.records
{
node1 "abc"
node2 "def"
node3 "hij"
}
println json.toPrettyString()
但我想要做的是像这样访问节点的数据
json.records
{
node1 xml.node1 //xml.node1=abc
node2 xml.node2
node3 xml.node3
}
因为每个节点存储的数据对我来说都在变化。无论我上面写的任何代码都不起作用,我一直在打破这个问题。你能帮帮我吗?
答案 0 :(得分:2)
你几乎走在正确的轨道上。您只需要在xml对象上应用 .text()函数。
见下文
static main(args) {
def xmlrecords = '''<root>
<node1>abc</node1>
<node2>def</node2>
<node3>hij</node3>
</root>'''
def xml= new XmlParser().parseText(xmlrecords)
def json = new JsonBuilder()
json.records
{
node1 xml.node1.text() //xml.node1=abc
node2 xml.node2.text()
node3 xml.node3.text()
}
println json.toPrettyString()
}
<强>输出强>
{
"records": {
"node1": "abc",
"node2": "def",
"node3": "hij"
}
}
希望这有帮助!
答案 1 :(得分:0)
直接XML到JSON转换可以创建丑陋的深层嵌套JSON。您需要将XML转换为JSON中所需的简化结构。
def xmlrecords = '''<root>
<node1>abc</node1>
<node2>def</node2>
<node3>hij</node3>
</root>'''
def xml= new XmlParser().parseText( xmlrecords )
// programmatically transform XML into Map with node name and value
def map = new TreeMap()
xml.each {
map.put(it.name(), it.text())
}
def json = JsonOutput.toJson(map)
println JsonOutput.prettyPrint(json)
JSON输出:
{
"node1": "abc",
"node2": "def",
"node3": "hij"
}