【问题标题】:How to use jMeter to extract information in a wddx packet?如何使用 jMeter 提取 wddx 数据包中的信息?
【发布时间】:2012-06-12 21:46:24
【问题描述】:

我是使用 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() 函数并将内容分配给变量。根据我在调试采样器中的功能,该变量确实显示了正确的内容。但是,使用上述对 XPath 的函数调用并将结果分配给一个变量,该变量是空白的。这是我的问题,就提取 XML 文件中的值而言,我是否走错了路?如果是这样,我应该怎么做?

【问题讨论】:

    标签: xpath jmeter wddx


    【解决方案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]
    

    如果你只想要第一个字符串值,你可以试试这个 XPath:

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

    最后但同样重要的是:您确定您的 XML 文件不使用任何命名空间吗?因为如果确实如此,您需要在 XPath 中明确指定它们。

    【讨论】:

    • MiMo,感谢您的回复。不幸的是,这些建议都不适合我。是的,我确信我的 XML 文件确实使用了任何命名空间。
    • 我的意思是我的 XML 文件不使用任何命名空间。抱歉打错了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-09
    • 1970-01-01
    • 2015-01-26
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    • 1970-01-01
    相关资源
    最近更新 更多