以下の XML コードを使用します。
def soapResponse = "
<Results>
<ResultSet fetchSize="10">
<Row rowNumber="1">
<ID_ORDER>144107</ID_ORDER>
<CH_LNAME>TESTING</CH_LNAME>
<CH_FNAME>QA</CH_FNAME>
</Row>
<Row rowNumber="2">
<ID_ORDER>144108</ID_ORDER>
<CH_LNAME>TESTING</CH_LNAME>
<CH_FNAME>QA</CH_FNAME>
</Row>
</ResultSet>
</Results>
"
def inputXML = new XmlParser().parseText(soapResponse)
GPath を使用して、最初の行 (Row rowNumber="1") の下にある ID_ORDER の値を取得したいと考えています。
これは機能し、以下の変数には 144107 が入力されます。
def id_order = inputXML.ResultSet.Row[0].ID_ORDER
ただし、その GPath を Excel シートから作成できる必要があります。しかし、Excel セルに ResultSet/Row[0]/ID_ORDER を入力し、上記の行を変数として実行すると:
def excelVariable = //getting "ResultSet/Row[0]/ID_ORDER" from sheet
def excelVariableArray = excelVariable.split('/') //create array of it, separated by "/"
def id_order = inputXML."${excelVariableArray[0]}"."${excelVariableArray[1]}"."${excelVariableArray[2]}".text() //traverse through XML, get value of "ID_ORDER" under 1st "Row"element
ここでは id_order は入力されていません。Row[0] からインデックス "[0]" を取得すると、XML からすべての ID_ORDER 値が正常に取得されます。しかし、私は最初のものだけが欲しいので、インデックス 0 を使用しますが、機能しません - 値は空になります。
誰かがこれに対する解決策でチャイムを鳴らすことができることを願っています.