我有以下xml,我想从userReference
JsonObject
值
<void property="someId">
<object class=com.someclass>
<void method="add">
<object class="com.xyz.data">
<void property="firstActivationDate">
<object class="java.util.Date">
<long>11122344000</long>
</object>
</void>
<void property="service">
<string>P2P</string>
</void>
<void property="status">
<object idref="newSerivice"/>
</void>
</object>
</void>
</void>
<void property="userId">
<string>224662233412</string>
</void>
<void property="userReference">
<string>224662233412</string>
</void>
</object>
</void>
</object>
</void>
我正在做这样的事情:
def content = parser.parse(xmlStream.getJSON()).getAsJsonObject()
def jsonObject = content.get(//what should be the node here ?)?.getAsJsonObject()
if (jsonObject) {
userRef = jsonObject.get("userReference")?.getAsString()
}
我很困惑在哪里获取包含此属性的jsonObject。
答案 0 :(得分:0)
我认为您正在使用gson库中的com.google.gson.JsonParser
,但我不确定,因为您的问题中没有足够的上下文。
无论如何,为什么你不使用gdk中的XmlSlurper
来实现你的目标。
假设您要在xml的以下节点中获取文本值:
<void property="userReference">
<string>224662233412</string>
</void>
您可以使用以下代码(以前纠正XML格式正确):
import groovy.xml.*
def xmlText = '''<void>
<object>
<void>
<void method="add">
<object class="com.xyz.data">
<void property="firstActivationDate">
<object class="java.util.Date">
<long>11122344000</long>
</object>
</void>
<void property="service">
<string>P2P</string>
</void>
<void property="status">
<object idref="newSerivice"/>
</void>
</object>
</void>
</void>
<void property="userId">
<string>224662233412</string>
</void>
<void property="userReference">
<string>224662233412</string>
</void>
</object>
</void>'''
def xml = new XmlSlurper().parseText(xmlText)
def foo = xml.depthFirst().find { it.name() == 'void' && it.@property == 'userReference'}
println foo.text() // 224662233412
希望这有帮助,
答案 1 :(得分:0)
以下为我解决了。
基本上我们需要做的是,而不是immediate parent object
到attribute
,我们需要获得parent object
到attribute
的第一个{。}}。
在这种情况下immediate parent object
可以通过someid
获得
def jsonObject = tr.get("someId")?.getAsJsonObject() //get parent object which encloses child object, that child object encloses the attribute.
userRef = jsonObject.get("userReference")?.getAsString() // get required attribute directly from immediate parent object.
&#13;