我有一个xml响应,如下所示: -
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<multiRef xmlns:ns9="http://hero.ar.vixo.in" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" id="id2" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns9:IdentityModel">
<vixId xsi:type="xsd:int">13364719</vixId>
</multiRef>
</soapenv:Body>
</soapenv:Envelope>
此回复存储在String
名称xmlMsg
中
我试图按如下方式解析它: -
def xml = new XmlSlurper().parseText(xmlMsg);
def vixId = xml.Body.multiRef.vixId.text()
但问题在于,在阅读vixId
之前,我想验证是否输入&#39; multiRef
代码中的IdentityModel
我尝试按以下方式访问type
,但徒劳无功: -
def vixId = xml.Body.multiRef.@type.text()
请注意,我可以使用以下方式访问id
代码中的multiRef
: -
def vixId = xml.Body.multiRef.@id.text()
请帮助我访问type
代码
multiRef
请注意,我想解析type
标记中的multiRef
,而不使用multiRef.'@xsi:type'
之类的名称空间,因为我的namespace
可能会发生变化。我想要的是multiRef
标记的属性type
,其值为IdentityModel
..只有在那里,我才能阅读vixId
。
另请注意,使用groovy 1.8我正在使用multiRef.@type
解析它而不使用命名空间但是自从我将groovy更新为2.4.7后它就停止了工作
我使用groovy 1.8解析它的方式是:
def xml = new XmlSlurper(factory.newSAXParser().getXMLReader()).parseText(xmlMsg)
idModel = xml.Body.multiRef.@type.text()
PS: - 我在处理xmls方面相当新颖