0

私は XPath と JMeter の両方を使用する初心者です。wddx パケットを含む XML ファイルがあります。以下はサンプルファイルです。実際のデータには、一度に最大 100 レコードを含めることができます。

<wddxPacket version='1'>
    <header/>
    <data>
        <recordset rowCount='2' fieldNames='FIELD1, FIELD2' type='coldfusion.sql.QueryTable'>
            <field name='FIELD1'>
                <string>MyValue1</string>
                <string>MyValue2</string>
            </field>
            <field name='FIELD2'>
                <string>MyValue3</string>
                <string>MyValue4</string>
            </field>
        </recordset>
    </data>
</wddxPacket>

recordsetタグで指定された行数に基づいて XML ファイルをループしFIELD1FIELD2、 などの文字列値を抽出して、他の Web サービス (SOAP) サンプラーで使用する必要があります。値を確実に抽出できるようにするために、JMeter 関数 XPath を使用しています。XPath 呼び出しは次のとおりです (取得しようとしていますMyValue1)。

${__XPath(c:\test.xml, /wddxPacket/data/recordset/field[@name='FIELD1']/string)}

ファイルの読み取り部分が正しいことを確認するために、FileToString()関数を使用して内容を変数に代入します。Debug Sampler でできることに基づいて、変数は正しい内容を示しています。ただし、上記の関数呼び出しを XPath に使用して結果を変数に代入すると、変数は空白になります。XML ファイル内の値の抽出に関する限り、私の質問は次のとおりです。もしそうなら、私は代わりに何をすべきですか?

4

1 に答える 1

1

JMeterはわかりませんが、このXPath

/wddxPacket/data/recordset/field[@name='FIELD1']/string

文字列値を返さず、2つのノードを含むノードセットを返します

<string>MyValue1</string> 
<string>MyValue2</string> 

最初のノードのみが必要な場合は、次のXPathを使用できます。

/wddxPacket/data/recordset/field[@name='FIELD1']/string[1]

最初の文字列値だけが必要な場合は、次のXPathを試すことができます。

string(/wddxPacket/data/recordset/field[@name='FIELD1']/string)

最後になりましたが、XMLファイルで名前空間が使用されていませんか?その場合は、XPathで明示的に指定する必要があるためです。

于 2012-06-13T01:42:24.710 に答える