get xml query result

Description

Query an XML string by XPath.

Arguments

Notes

Applicable Built-In Settings

The following settings are applicable to this action: remove double quotes from cells.

Applicable Controls

This action is applicable to the following controls: none.

Example - Case 1: Using an XPath predicate in an XPath query

The following example retrieves the text from the title element of the first book element that is a child of a bookstore element.

<?xml version="1.0"?>
<bookstore>
  <book id="bk101" category="COOKING">
    <title lang="en">Everyday Italian</title>
    <author>Giada De Laurentiis</author>
    <year>2005</year>
    <price>30</price>
  </book>
  <book id="bk102" category="CHILDREN">
    <title lang="en">Harry Potter</title>
    <author>J K. Rowling</author>
    <year>2005</year>
    <price>35</price>
  </book>
</bookstore>

Action Lines

Result

Example - Case 2: Using an XPath function in an XPath query

The following example returns the sum of all price nodes.

<?xml version="1.0"?>
<bookstore>
  <book id="bk101" category="COOKING">
    <title lang="en">Everyday Italian</title>
    <author>Giada De Laurentiis</author>
    <year>2005</year>
    <price>30</price>
  </book>
  <book id="bk102" category="CHILDREN">
    <title lang="en">Harry Potter</title>
    <author>J K. Rowling</author>
    <year>2005</year>
    <price>35</price>
  </book>
</bookstore> 

Action Lines

Result

Example - Case 3: Using a data set

The following example repetitively retrieves the text from the price element based on the title variable defined within a data set.

As an example, the first iteration of the use data set loop issues an XPath query of //price[../title="Everyday Italian"]/text().

Important: 
To have TestArchitect parse a quotation mark, enter four consecutive quotation marks into the editor cell, that is, """".

<?xml version="1.0"?>
<bookstore>
  <book id="bk101" category="COOKING">
    <title lang="en">Everyday Italian</title>
    <author>Giada De Laurentiis</author>
    <year>2005</year>
    <price>30</price>
  </book>
  <book id="bk102" category="CHILDREN">
    <title lang="en">Harry Potter</title>
    <author>J K. Rowling</author>
    <year>2005</year>
    <price>35</price>
  </book>
</bookstore>

Action Lines

Result

Example - Case 4: Passing an entire XML file’s content into the xml argument

The following example passes an entire well-formed XML string into the xml argument. Whitespace and line breaks between XML nodes within the document have been removed beforehand, as required.

Action Lines

Result

Example - Case 5: Using get text line to extract content

The following example extracts a single XML line, <title lang=“en”>Harry Potter</title>, from a variable holding multiple XML lines by using the get text line action.

<?xml version="1.0"?>
<bookstore>
  <book id="bk101" category="COOKING">
    <title lang="en">Everyday Italian</title>
    <author>Giada De Laurentiis</author>
    <year>2005</year>
    <price>30</price>
  </book>
  <book id="bk102" category="CHILDREN">
    <title lang="en">Harry Potter</title>
    <author>J K. Rowling</author>
    <year>2005</year>
    <price>35</price>
  </book>
</bookstore> 

Action Lines

Result

Example - Case 6: Adding a single root element

The following example encloses the returned XML document in a single root element to ensure a well-formed XML document. The modified XML document is then used to calculate the sum of all price nodes.

<?xml version="1.0"?>
<bookstore>
  <book id="bk101" category="COOKING">
    <title lang="en">Everyday Italian</title>
    <author>Giada De Laurentiis</author>
    <year>2005</year>
    <price>30</price>
  </book>
  <book id="bk102" category="CHILDREN">
    <title lang="en">Harry Potter</title>
    <author>J K. Rowling</author>
    <year>2005</year>
    <price>35</price>
  </book>
</bookstore> 

Test Lines

Result

Example - Case 7: Resolving the problem of namespaces

Let’s see an example of an XML file with a namespace:

<cr:cricketers xmlns:cr="http://www.example.com/">
   <cr:cricketer type="righty">
	<name>MS Dhoni</name>
	<role>Captain</role>
	<position>Wicket-Keeper</position>
   </cr:cricketer>
</cr:cricketers>

Use the local-name() function for your XPath, in order to retrieve the content of the <name> element of the cricketer node despite its enclosure in a namespace. For example, //*[local-name()=‘cricketer’]/name/text():

Test Lines

Result


Copyright © 2023 LogiGear Corporation. All rights reserved. LogiGear is a registered trademark, and Action Based Testing and TestArchitect are trademarks of LogiGear Corporation. All other trademarks contained herein are the property of their respective owners.

LogiGear Corporation

1730 S. Amphlett Blvd. Suite 200, San Mateo, CA 94402

Tel: +1(800) 322-0333