我有一些XML想要转换为Map。我使用了将XML转换为JSON,然后放大json映射的中间方法:
import org.json.XML
import groovy.json.JsonSlurper
Map parseXml(String input) {
String json = XML.toJSONObject(input).toString()
new JsonSlurper().parseText(json)
}
但是,如果您有名字间距,它不会被删除。
例如
<ns2:someObject xmlns:ns2="http://someLink">
<someOtherObject>
<something>SOME_THING</something>
</someOtherObject>
<someOtherObject>
<something>SOME_THING_ELSE</something>
</someOtherObject>
</ns2:someObject>
将以
结尾{
"ns2:someObject": {
"xmlns:ns2": "http://someLink",
"someOtherObject": [
{
"something": "SOME_THING"
},
{
"something": "SOME_THING_ELSE"
}
]
}
}
但是我希望它最终像这样:
{
"someObject": [
{
"something": "SOME_THING"
},
{
"something": "SOME_THING_ELSE"
}
]
}
有人知道我如何在不重新发明轮子的情况下实现这一目标吗?
我已经发现一个post与我的有点类似,但是它有不同的方法,这就是为什么我问我的问题。
我给出的示例只是一个示例,但是有someObjects
的多个条目,另一篇文章中的给定答案不包括。
其次,它确实遍历XML并创建它的映射-这就是我对reinventing the wheel
的意思。我确信必须已经有一个库正在执行此操作,所以对我来说,自己编写解析代码似乎是错误的。
非常感谢