Forum Discussion
Yes!
Sorry - I do get quite wordy don't i? :)
My request to the webservice (if successful) should result in a new row being added to the database. So after submitting the post request, essentially I need to extract the value of the RecordID attribute from the source data file and pass it to the JDBC Step where I will just have a simple query (select * from table where RecordID='RecordID value sourced from datafile';) to verify the row being added to the database.
So I was thinking my object hierarchy in my test case would be something like the following:
Datasource (specifying directory to source test data XML files from, Property= FileContent)
SOAP request (posts to web service - body of Soap request is the content of the test data XML files via the ${DataSource#FileContent})
Property Transfer (to pull RecordID from XML file in directory)
JDBC Step (select * from table where RecordID='value in testdata XML file')
I feel like I should apologise - I was a Java coder 15 years ago, but I've been testing since and I just cant remember anything to do with code anymore and this was why I got the licensed/Pro version of SoapUI so I wouldn't have to rely on groovy scripting!
Thanks again for any and all help!
Sorry - I've read all that an thought I'd re-emphasise my problem.
I need to source the RecordID attribute value from the XML datafile and then pass that value to the JDBC step to query the database after I've posted to the web service.
I hope I have been clear.
Thanks again - I really appreciate all help you are giving me!
richie
- Radford7 years agoSuper Contributor
A couple of points:
Firstly, I've updated my code to demo with your XML:
import groovy.util.XmlSlurper // Get XML from data source property, you MUST update the line below to point to your datasource property. // def xmlText = context.expand( '${DataSource#contents}' ) //Example XML just to demo XmlSlurper def xmlText = '''<RecordInput xsi:noNamespaceSchemaLocation="file:///D:/Folder/CSMRecord_v1_0_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <RecordProfile RecordID="D8765" RequestedDateTime="20170412163030999"> <RecordName>Record NAME 20 CHARSS</RecordName> <LocationName>LOCATION NAME OF Record 30 CHAR</LocationName> <BuildingName>LOCATION NAME OF Record 30 CHAR</BuildingName> <InternalLocation>XINTERNAL LOCATION WITH A LARGE 50 CHARACTER LIMIT</InternalLocation> <ExternalLocation>XEXTERNAL LOCATION WITH A LARGE 50 CHARACTER LIMIT</ExternalLocation> <Address Type="V"> <CompanyName>C NAME NOT FOR Record</CompanyName> <Line>30 CHARACTER 1ST LINE -ADDRESS</Line> <Line>30 CHARACTER 2ND LINE -ADDRESS</Line> <Line>30 CHARACTER 3RD LINE -ADDRESS</Line> <Line>30 CHARACTER 4TH LINE -ADDRESS</Line> <Postcode>AB10 1XG</Postcode> <Latitude>57.14416516</Latitude> <Longitude>-2.114847768</Longitude> </Address> <Telno>07581455199</Telno> <MaxBedNo>99</MaxBedNo> <NGArea>NJ</NGArea> <InUse>Y</InUse> <RegionCode>RC</RegionCode> <FixSite>N</FixSite> <SectorCode>SC</SectorCode> </RecordProfile> </RecordInput>''' def RecordInput = new XmlSlurper().parseText(xmlText) log.info(RecordInput.RecordProfile.@RecordID)
Secondly, the the "org.xml.sax.SAXParseException; Premature end of file" error is probably because you did not update the line:
def xmlText = context.expand( '${DataSource#contents}' )
to point to your actual datasource property. If you are unsure of the exact syntax to use, look and the point and click GetData functionality.
Related Content
- 4 years agouser2
- 2 years agotvklovesu
- 5 years agoSandro2020
- 5 years agoVitamin
Recent Discussions
- 23 hours agoarmygrad