2012-06-12 34 views
0

我是使用XPath和JMeter的新手。我有一個包含wddx數據包的XML文件。以下是一個示例文件。實際數據一次最多可以包含100條記錄。如何使用jMeter提取wddx數據包中的信息?

<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標籤計數指定,然後提取字符串值FIELD1FIELD2等,以及一些其他的WebService使用它們(XML文件SOAP)採樣器。爲了確保我可以提取值,我使用了JMeter函數XPath。中的XPath調用如下(我試圖讓MyValue1),

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

只是爲了確保該文件讀取部是正確的,我用的是FileToString()功能並指定內容到一個變量。根據我在調試採樣器中的內容,變量確實顯示了正確的內容。但是,使用上面的XPath函數調用並將結果賦給變量,該變量爲空。這裏是我的問題,就提取XML文件中的值而言,我是否會採用錯誤的方式?如果是這樣,我該怎麼做呢?

回答

1

我不知道JMeter的,但這個XPath

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

不會返回一個字符串值,它如果你只想要第一個返回一個包含兩個節點

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

一個節點集節點可以使用這個XPath:

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

,如果你只想在第一個字符串值,你可以嘗試THI s XPath:

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

最後但並非最不重要的:你確定你的XML文件沒有使用任何命名空間嗎?因爲如果需要,您需要在您的XPath中明確指定它們。

+0

MiMo,謝謝你的迴應。不幸的是,這些建議都不適合我。是的,我相信我的XML文件確實使用了任何名稱空間。 –

+0

我的意思是我的XML文件不使用任何命名空間。對不起,錯字。 –

相關問題