get xml query result
名前 | 説明 | タイプ | 修飾子 |
---|---|---|---|
xml | XMLターゲット文字列は、クエリを実行する対象のXMLファイルからコンテンツにアクセスするために使用します。 ヒント: XMLドキュメントを変数に読み込むためにアクション get text file を使用し、その後この引数で変数を参照します。 | String | なし |
xpath | XPathクエリ文字列です。 | String | なし |
variable | (任意)返されたクエリ結果を受け取る変数です。 | String | なし |
例・ケース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
 
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
 
xml xpath expected
get xml query result # bookstore sum(/bookstore/book/price) sum
結果
例・ケース3: データセットを使用します
次の例では、データセット内で定義されたtitle変数に基づいて、price要素から繰り返しテキストを取得します。
例として、使用するデータセットループの最初の繰り返しでは、XPathクエリ//price[../title="Everyday Italian"]/text().
が発行されます。
""""
を入力してください。<?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
 
name
use data set /books_ds
 
xml xpath variable
get xml query result # bookstore #"//price[../title=" & """" & title & """" & "]/text()" price
 
repeat for data set
結果
例・ケース4: 引数 xml に完全なXMLファイルのコンテンツを割り当てます
次の例では、引数 xml に整形されたXML文字列全体を渡します。文書内のXMLノード間の空白と改行は、必要に応じて事前に削除されています。
アクションライン
xml xpath variable
get xml query result <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> /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
 
xml xpath variable
get xml query result # bookstore /bookstore/book[@category="CHILDREN"] book_list
 
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
 
xml xpath variable
get xml query result # bookstore /bookstore/book[@category="COOKING" or @category="CHILDREN"] book_list
 
variable value
set global variable book_list #"<root>" & book_list & "</root>"
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
 
xml xpath variable
get xml query result # team //*[local-name()='cricketer']/name/text() name
結果
- XMLファイル全体のコンテンツをxml引数に挿入することは可能ですが、XMLノード間の全ての空白と改行は自動化の失敗を回避するために手動で削除する必要があります(例4を参照してください)。
- XPathクエリに応じて、変数引数に関する次の注意事項が適用される場合があります:
- 戻り値に複数のXMLノードが含まれる可能性があります。変数から1行のコンテンツを抽出またはチェックする場合は、アクション get text line または check text line を使用してください。(例5を参照してください)
- 戻り値に複数のXMLノードが含まれ、別のXPathクエリで使用する場合は、トップレベルに単一のルート要素を追加して、それが適切に形成されたXMLであることを確認してください。(例6を参照してください)
- 引数 variable の変数が宣言されていない場合は、そのアクションはそれをグローバルとして作成します。
- 引数 variable が空の場合は、 TestArchitect は「_result」という名前のグローバル変数に値を供給します。
- XMLターゲット文字列に 名前空間 (要素の開始タグのxmlns属性で定義される)がある場合、そしてXPath式に名前空間が設定されていない場合、クエリ文字列は結果を返しません。この名前空間の問題を解決するために、 local-name() 関数を使用することができます。この関数は、対象文字列に名前空間が宣言されていないかのようにクエリ結果を返します。(例: 以上の例#7を参照してください)
- このアクションは修飾子 <ignore> をサポートしています。もし引数のいずれかの値として文字列
<ignore>
が含まれているか、或いはどの引数かが<ignore>
に評価される式を含んでいる場合、そのアクションは実行中にスキップされます。