get xml query result

XPathを使用してXML文字列をクエリします。
名前説明タイプ修飾子
xml

XMLターゲット文字列は、クエリを実行する対象のXMLファイルからコンテンツにアクセスするために使用します。

ヒント: 
XMLドキュメントを変数に読み込むためにget text fileアクションを使用し、その後この引数で変数を参照します。

Stringなし
xpath

XPathクエリ文字列です。

Stringなし
expected

(任意)期待されたクエリ結果です。

Stringなし
文字列が一致する場合は「Passed」になり、それ以外の場合は「Failed」になります。
このアクションは、次のプロジェクト項目で使用できます: テストモジュールおよびユーザー定義アクションです。
次の設定はこのアクションに適用可能です:  remove double quotes from cells.
このアクションは、次のコントロールに適用できます: なし
例・ケース1: XPathクエリ内でXPath述語を使用します

次の例では、bookstore要素の子である最初のbook要素のtitle要素からテキストを取得します。

<?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>
アクションライン
      
        	file	variable	
get text file	D:\bookstore.txt	bookstore	
&nbsp			
	xml	xpath	expected
get xml query result	# bookstore	/bookstore/book[1]/title/text()	book_title
      
  
結果
例・ケース2: XPathクエリ内でXPath関数を使用します

次の例では、全てのpriceノードの合計を返します。

<?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>
アクションライン
      
        	file	variable	
get text file	D:\bookstore.txt	bookstore	
&nbsp			
	xml	xpath	expected
get xml query result	# bookstore	sum(/bookstore/book/price)	sum 
      
  
結果
例・ケース3: データセットを使用します

次の例では、データセット内で定義されたtitle変数に基づいて、price要素から繰り返しテキストを取得します。 例として、使用するデータセットループの最初の繰り返しでは、XPathクエリ//price[../title="Everyday Italian"]/text().が発行されます。

重要: 
TestArchitect が引用符を解析するために、エディターセルには四つの連続した引用符 """" を入力してください。

<?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>
アクションライン
      
        	file	variable	
get text file	D:\bookstore.txt	bookstore	
&nbsp			
	name		
use data set	/books_ds		
&nbsp			
	xml	xpath	variable
get xml query result	# bookstore	#"//price[../title=" & """" & title & """" & "]/text()"	price
&nbsp			
repeat for data set			
      
  
結果
例・ケース4: 引数 xml に完全なXMLファイルのコンテンツを割り当てます

次の例では、引数 xml に整形されたXML文字列全体を渡します。文書内のXMLノード間の空白と改行は、必要に応じて事前に削除されています。

アクションライン
      
        	xml	xpath	variable
get xml query result	&lt;bookstore&gt;  &lt;book id="bk101" category="COOKING"&gt;    &lt;title lang="en"&gt;Everyday Italian&lt;/title&gt;    &lt;author&gt;Giada De Laurentiis&lt;/author&gt;    &lt;year&gt;2005&lt;/year&gt;    &lt;price&gt;30&lt;/price&gt;  &lt;/book&gt;  &lt;book id="bk102" category="CHILDREN"&gt;    &lt;title lang="en"&gt;Harry Potter&lt;/title&gt;    &lt;author&gt;J K. Rowling&lt;/author&gt;    &lt;year&gt;2005&lt;/year&gt;    &lt;price&gt;35&lt;/price&gt;  &lt;/book&gt;&lt;/bookstore&gt;	/bookstore/book[1]/title/text()	book_title
      
  
結果
例・ケース5: get text lineを使用して、コンテンツを抽出します

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.

次の例では、アクション get text line を使用して、複数のXML行を保持する変数から<title lang=“en”>Harry Potter</title>の単一のXML行を抽出します。

<?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>
アクションライン
      
        	file	variable	
get text file	D:\bookstore.txt	bookstore	
&nbsp			
	xml	xpath	variable
get xml query result	# bookstore	/bookstore/book[@category="CHILDREN"]	book_list
&nbsp			
	value	number	variable
get text file	#book_list	2	xml line 
      
  
結果
例・ケース6: 単一のルート要素を追加します

次の例では、戻されたXMLドキュメントを適切に形成されたXMLドキュメントとするために、単一のルート要素で囲みます。変更されたXMLドキュメントは、全てのpriceノードの合計を計算するために使用されます。

<?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>
      
        	file	variable	
get text file	D:\bookstore.txt	bookstore	
&nbsp			
	xml	xpath	variable
get xml query result	# bookstore	/bookstore/book[@category="COOKING" or @category="CHILDREN"]	book_list
&nbsp			
	variable	value	
set global variable	book_list	#"&lt;root&gt;" & book_list & "&lt;/root&gt;"	
	xml	xpath	variable
get xml query result	#book_list	sum(/root/book/price)	sum
      
  
結果
例・ケース7: 名前空間の問題の解決します

名前空間を持つXMLファイルの例を見てみましょう: 

<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>

local-name() 関数を使用して、名前空間で囲まれているにもかかわらず、cricketer ノードの <name> 要素の内容を取得するための XPath を作成します。例えば、//*[local-name()='cricketer']/name/text(): 

アクションライン
      
        	file	variable	
get text file	D:\cricketTeam_info.xml	team	
&nbsp			
	xml	xpath	variable
get xml query result	# team	//*[local-name()='cricketer']/name/text()	name
      
  
結果
  • 引数 expected が空の場合、返されたXMLが本当に空であれば合格となり、それ以外の場合は不合格となります
  • 引数 XML には、XMLファイル全体のコンテンツを挿入することが可能です。ただし、XMLノード間の全ての空白と改行は手動で削除しなければなりません。これを行わないと、自動化の失敗が発生します(例4を参照してください)。
  • XMLターゲット文字列に 名前空間 (要素の開始タグのxmlns属性で定義される)がある場合、そしてXPath式に名前空間が設定されていない場合、クエリ文字列は結果を返しません。この名前空間の問題を解決するために、 local-name() 関数を使用することができます。この関数は、対象文字列に名前空間が宣言されていないかのようにクエリ結果を返します。(例: 以上の例#5を参照してください)
  • このアクションは修飾子 <ignore> をサポートしています。もし引数のいずれかの値として文字列 <ignore> が含まれているか、或いはどの引数かが <ignore> に評価される式を含んでいる場合、そのアクションは実行中にスキップされます。

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