如何在JMeter中的正则表达式中排除某个单词?

时间:2014-03-20 12:03:11

标签: regex jmeter

我在为JMeter创建正则表达式时遇到了问题。 使用JMeter,我从服务器请求一个文件夹列表。服务器返回如下所示的XML:

<folder name="\" size="296248" date="1395213548" sub="11" files="6">
    <folder name="My Documents" size="0" date="1395069093" sub="0" files="0" flags="2"></folder>
    <folder name="Sharepoint" size="0" date="1394019070" sub="0" files="0" flags="6"></folder>
    <folder name="folder 1" size="0" date="1395140513" sub="0" files="0"></folder>
    <folder name="folder 3" size="0" date="1395213292" sub="0" files="0" flags="2"></folder>
</folder>

我需要得到&#34;名称&#34;所有文件夹的值,不包括根文件夹本身。所以现在我在JMeter中有以下正则表达式:

<folder name="([^"]+)" [^>]+></folder>

(在示例中,它返回文件夹:My Documents,Sharepoint,folder 1,folder 3)

这很有效,但现在我的问题出现了。我需要排除具有属性flags =&#34; 6&#34;的文件夹。并非所有文件夹都具有此属性。 那么我如何像上面那样选择文件夹,但排除那些包含flags =&#34; 6&#34;的文件夹。如果文件夹没有&#34;标记&#34;属性,或者它的值不是6,那么它应该在我的变量中列出。

在示例中,名为&#34; Sharepoint&#34;的文件夹不应该退还。

感谢您的帮助!

祝你好运, 大卫

1 个答案:

答案 0 :(得分:1)

JMeter提供XPath Extractor用于处理XML(和通过JTidy的HTML)数据

返回所有文件夹名称的相关XPath表达式如下所示:

//folder/folder/@name

这将返回以下匹配变量。您将能够使用ForEach Controller来迭代它们。

folder=My Documents
folder_1=My Documents
folder_2=Sharepoint
folder_3=folder 1
folder_4=folder 3
folder_matchNr=4