Showing posts with label XmlHolder. Show all posts
Showing posts with label XmlHolder. Show all posts

Sunday, November 23, 2014

getNodeValues in XmlHolder for SoapUI

def request = '''<xml>
   <node>
      <val1>pqr</val1>
      <val2>abc</val2>
   </node>
   <node>
      <val1>xyz</val1>
      <val2>lmn</val2>
   </node>
</xml>'''


def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )
def holder = new com.eviware.soapui.support.XmlHolder( request )


// loop item nodes in response message

//get All occurance of node/val1
log.info "--------First For loop------------"
for( item in holder.getNodeValues( "//node/val1" ))
log.info "Node : [$item]"

OUTPUT

Sun Nov 23 19:51:36 IST 2014:INFO:--------First For loop------------
Sun Nov 23 19:51:36 IST 2014:INFO:Node : [pqr]
Sun Nov 23 19:51:36 IST 2014:INFO:Node : [xyz]
Sun Nov 23 19:51:36 IST 2014:INFO:--------Second For loop------------
Sun Nov 23 19:51:36 IST 2014:INFO:Node : [pqr]

How to removenodes from Request/Response for assertion

import com.eviware.soapui.support.*
def soapmessage = '''<ns:basket xmlns:ns="http://example.com">
                    <ns:fruit>
                    <ns:name>banana</ns:name>
                          <ns:color>yellow</ns:color>
                         </ns:fruit>
                       <ns:fruit>
                          <ns:name>apple</ns:name>
                          <ns:color>green</ns:color>
                         </ns:fruit>
                       <ns:fruit>
                         <ns:name>strawberry</ns:name>
                          <ns:color>red</ns:color>
                         </ns:fruit>
                    </ns:basket>'''


def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )

def holder = new com.eviware.soapui.support.XmlHolder( soapmessage )
  //holder.namespaces["ns"] = "http://example.com"
  //holder.declareNamespace("ns", "http://example.com")

assert holder.getNodeValue("//ns:fruit[2]/ns:color[1]") == "green"

holder.removeDomNodes("//*:fruit[2]")

assert holder.getNodeValue("//ns:fruit[2]/ns:color[1]") == "red"
log.info "Done"

Saturday, November 22, 2014

Constructors For XmlHolder

XmlHolder is the class provided by SoapUI to parse the Xml


1)def holder = XmlHolder(Node node)
Here were are passing the node directly

eg : def holder = XmlHolder("//parent/child")

2)def holder = XmlHolder(String Xml)
Here we are directly passing the xml itself

eg : def holder = XmlHolder("<body><name>xyz</name><phone>1234567890</phone></body>")

3)def holder = XmlHolder(org.apache.xmlbeans.XmlObject xmlObject)
here we pass an obect that has xml in it

How to access Nodes Using XmlHolder in SoapUI API

import com.eviware.soapui.support.*

def request='''
<Body>
<keyboard1>Qwerty~12-qwerty</keyboard1>
<conversationId1>sfksjkdjf2213123</conversationId1>
</Body>
'''

XmlHolder holder = new XmlHolder(request)
log.info holder.getNodeValue("//keyboard1")