使用groovy解析带有转义xml的soap消息时无法检索数据

时间:2017-05-04 20:33:08

标签: groovy

我尝试从soap消息中选择节点的值(使用gt和lt符号),但是不能这样做,我只能得到body(root.Body)和其他节点不可见,它是空的结果。我错了什么? 谢谢!

import groovy.util.slurpersupport.Node
import groovy.util.slurpersupport.NodeChild
import groovy.xml.XmlUtil


String source=
'''<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>
      &lt;ns0:GetListBy_QualificationResponse xmlns:ns0=&quot;urn:WS_CTM_People_ICEVA&quot;&gt;
         &lt;ns0:getListValues&gt;
            &lt;ns0:Person_ID&gt;PPL000000301739&lt;/ns0:Person_ID&gt;
            &lt;ns0:Submitter&gt;soehler&lt;/ns0:Submitter&gt;
            &lt;ns0:Profile_Status&gt;Enabled&lt;/ns0:Profile_Status&gt;
            &lt;ns0:Locale2&gt;en_US&lt;/ns0:Locale2&gt;
            &lt;ns0:VIP&gt;No&lt;/ns0:VIP&gt;
            &lt;ns0:Client_Sensitivity&gt;Standard&lt;/ns0:Client_Sensitivity&gt;
         &lt;/ns0:getListValues&gt;
      &lt;/ns0:GetListBy_QualificationResponse&gt;
   </soapenv:Body>
</soapenv:Envelope>'''

def root = new XmlSlurper().parseText(source)

def Submitter =root.Body.GetListBy_QualificationResponse.getListValues.'*'.find { node->
    node.name() == 'Submitter'
}

1 个答案:

答案 0 :(得分:1)

这是因为xml是转义。为了能够检索数据属性,需要 unescape xml字符串并将其传递给b.width

以下是如何做到的:

b.height

您可以快速在线试用 Demo