Ask a Question

GETTING ERROR WHEN USING getDomNodes()

SOLVED
Jibu
Occasional Contributor

GETTING ERROR WHEN USING getDomNodes()

def json = new JsonSlurper().parseText(response)
def groovyutils = new com.eviware.soapui.support.GroovyUtils(context)

def DBholder = groovyutils.getXmlHolder("JDBC RequestForDatabase#ResponseAsXml")

def xmlUtil = new com.eviware.soapui.support.xml.XmlUtils();

def nodes = json.getDomNodes("//*");   (line 28)

 

Getting the below exception when runing scripts

 

groovy.lang.MissingMethodException: No signature of method: groovy.json.internal.LazyMap.getDomNodes() is applicable for argument types: (java.lang.String) values: [//*] error at line: 28

 

 

 

My response JSON is like below

 

{
  "payload": {
    "authstatus": "string",
    "code": "string",
    "id": "string",
    "action_code": "string"
  }
}

 

7 REPLIES 7
JHunt
Community Hero

What are you trying to achieve with this script?

 

After the first line, you can just get the fields directly.

def json = new JsonSlurper().parseText(response)
assert json.payload.authstatus == "string"
Jibu
Occasional Contributor

I am trying to read each node in response and I have an JDBC xmlresponse ready. So I want to compare the response payload with each tag of the jdbc xml and then insert to an excel after comparing the data

JHunt
Community Hero

Ok, so I think this is all you need, right?

 

def json = new JsonSlurper().parseText(response)
def groovyutils = new com.eviware.soapui.support.GroovyUtils(context)
def DBholder = groovyutils.getXmlHolder("JDBC RequestForDatabase#ResponseAsXml")

assert DBholder.foo == json.payload.foo
assert DBholder.bar == json.payload.bar
Jibu
Occasional Contributor

Ya. This would be fine. I haven't thought like this. Thank you I will check now.

Jibu
Occasional Contributor

My JDBC response is like below

<Results>
<ResultSet fetchSize="10">
<Row rowNumber="1">
<V_OBJ_ID>6455a073-29b0-4261-a310-a99b89ef57bb</V_OBJ_ID>
<V_OBJ_CODE>TEST_TYPE_5</V_OBJ_CODE>
<N_VERSION>1</N_VERSION>
<V_AUTH_STATUS>D</V_AUTH_STATUS>
</Row>
</ResultSet>
</Results>

 

 

But when I use 

def DBholder = groovyutils.getXmlHolder("JDBC RequestForDatabase#ResponseAsXml")

assert DBholder.V_OBJ_ID == json.payload.id

 

I am getting the below error. there is no value for DBholder.V_OBJ_ID 

com.eviware.soapui.support.XmlHolder@66fa28 (toString() threw java.lang.NullPointerException) error at line: 27

JHunt
Community Hero

Sorry, I had forgotten that XmlHolder is based on XPath. So it would be more like this:

 

assert DBholder["/Results/ResultSet/Row[@rowNumber=1]/V_OBJ_ID"] == json.payload.id

 

 

Jibu
Occasional Contributor

but the actual question why the below error
groovy.lang.MissingMethodException: No signature of method: groovy.json.internal.LazyMap.getDomNodes() is applicable for argument types: (java.lang.String) values: [//*] error at line: 28

 

when will we use [//*]

cancel
Showing results for 
Search instead for 
Did you mean: