≡ Menu
Joe Colantonio – Selenium-UFT-QTP-SoapUI-ALM-LoadRunner & more

Service Test 11 – How to save elements in a web service response to an XML file

Service Test 11 – How to save elements in a web service response to an XML file post image

Today we’ll take a look at how to use Services Test’s ‘Custom Code’ activity to save some elements returned by a web service’s response to a XML file.

  1. Start the Sample Application that comes with Service Test (Start\Programs\Hp Service Test 11.10\Sample Application.
  2. Write down the WSDL’s endpoint: http://localhost:24240/HPFlights_SOAP?WSDL

     

  3. Create a new test in ST and Click on the Import Service
  4. In the Import Service from URL or UDDI’s Address field enter: http://localhost:24240/HPFlights_SOAP?WSDL
  5. Under ST’s ‘Toolbox’ under the ‘Web Services’ folder you should have a GetFlights operation. Drag that to the main canvas area.

  6. In the GetFlights Property Sheet enter the following:

    DepartureCity= Denver
    ArrivalCity = London

  7. Under the Toolbox Miscellaneous folder drag a custom code onto the canvas
  8. Under the Custom code’s property sheet click on ‘Add Input Property’

  9. Name the input property flightXML type ‘String’
  10. Link the flightXML value to the GetFlights output GetFlightResponse

  11. Click on the Custom Codes property sheet ‘Events'(thunderbolt) icon
  12. Select ‘Create a default handler’ under the ‘ExecuteEvent’
  13. Save your ST test up to this point
  14. In your custom code CodeActivity_OnExecuteEvent enter the following:

XmlDocument xml1 = new XmlDocument();
xml1.LoadXml(this.CodeActivity5.Input.flightXML);
//Get the number of flight returned
XmlNodeList fNList = xml1.GetElementsByTagName("FlightNumber");
 int fCount = fNList.Count;
// Create the xml document to hold flight info 
XmlDocument doc = new XmlDocument();
XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", null, null);
doc.AppendChild(dec); // Create the root element
XmlElement root = doc.CreateElement("GetFlights");
doc.AppendChild(root);
// Create a Flight retunred count element
XmlElement FlightCount = doc.CreateElement("FlightCount");
FlightCount.InnerText = fCount.ToString();
root.AppendChild(FlightCount);

for(int i=0;i)
{

XmlElement Flights = doc.CreateElement("Flights");
//Create a flight element that will hold the flight num
XmlElement flight = doc.CreateElement("flight");
/Assign the retunred flight num to element
flight.InnerText = fNList[i].InnerText;
Flights.AppendChild(flight);
root.AppendChild(Flights);
}

string xmlOutput = doc.OuterXml;
//Write XML to file
doc.Save("D:\\Flights.XML");

15. Run the test. The test should run without error and you should now have an XML file that looks like the following:

Next time we’ll take a look at how to read this XML and data drive the CreateFlights operation.

7 comments… add one

  • Naresh

    Hi Joe, i am getting at error at the line “for(int i=0;i)” . I tried to change the loop to for (int i=0;i<100;i++). Now i am getting custom code functionality error saying that "Object reference not set to an instance of an object.". Can you please help me out on this?

    • Gustavo

      Change the for loop to for(int i=0;i<fCount;i++).
      fCount is the number of elements found in the response.

  • abc

    I am getting same error,could you please guide us.

  • abc

    I am getting an error “Data at the root level is invalid. Line 1, position 1.”.

    At root level I have

    namespace Script
    {
    using System;
    using System.Xml;
    using System.Xml.Schema;
    using HP.ST.Ext.BasicActivities;
    using HP.ST.Fwk.RunTimeFWK;
    using HP.ST.Fwk.RunTimeFWK.ActivityFWK;
    using HP.ST.Fwk.RunTimeFWK.Utilities;
    using HP.ST.Fwk.RunTimeFWK.CompositeActivities;
    using System.Windows.Forms;

    Any idea about the possible reason behind this?Thanks in Advance!

    • abc » I don’t think I ever asked you – what version of Service Test are you using?

      • hello

        When I try web service response in XML and try toparameterize the test, I can just see the values of just last element in XML.Looks like values are “overwritten” because of doc.Save(); Is there anyway,I can see values of all the elements in the data table/sheet??

  • Kavitha

    Hi Joe,

    I am also getting the same error, “Object reference not set to an instance of an object”

    I am using the version 11.20.

Leave a Comment

css.php