I try to get node values from XML
response in a Groovy
script in SoapUI
. XML file sample:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns2:validateSignatureResponse xmlns:ns2="http://validation.dss.esig.europa.eu/" xmlns:ns3="http://dss.esig.europa.eu/validation/diagnostic" xmlns:ns4="http://dss.esig.europa.eu/validation/simple-report" xmlns:ns5="http://dss.esig.europa.eu/validation/detailed-report">
<WSReportsDTO>
<ns3:diagnosticData>
<ns3:DocumentName>testSigned.pdf</ns3:DocumentName>
<ns3:ValidationDate>2019-08-08T09:54:34</ns3:ValidationDate>
<ns3:Signatures>
<ns3:Signature Id="id-547ee2a04f4daf63g7e8g784b9920188719ca1f589e514egeg4573c1d1e0ea697b">
<ns3:SignatureFilename>testSigned.pdf</ns3:SignatureFilename>
<ns3:DateTime>2017-07-05T14:34:34</ns3:DateTime>
<ns3:SignatureFormat>PAdES-BASELINE-T</ns3:SignatureFormat>
<ns3:StructuralValidation>
<ns3:Valid>true</ns3:Valid>
</ns3:StructuralValidation>
I tried to use XmlSlurper
, as shown below:
def slurped = new XmlSlurper().parseText(response);
def status = ${slurped.'ns3:diagnosticData'.'ns3:Signatures'.'ns3:StructuralValidation'.'ns3:Valid'};
I got error message:
groovy.lang.MissingMethodException: No signature of method: Script23.$() is applicable for argument types: (Script23$_run_closure1) values: [Script23$_run_closure1@1e6835] Possible solutions: is(java.lang.Object), run(), run(), any(), use([Ljava.lang.Object;), any(groovy.lang.Closure) error at line: 13
After that I tried with this code and didn't get any error message, but property value is empty after execution.
def slurped = new XmlSlurper().parseText(response);
def indication = slurped.diagnosticData.Signatures.StructuralValidation.Valid;
I tried the same also in different form:
def code = new XmlSlurper().parseText(xml)
.Body
.validateSignatureResponse
.WSReportsDTO
.diagnosticData
.Signatures
.Signature
.StructuralValidation
.Valid
.text()