我在为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;的文件夹不应该退还。
感谢您的帮助!
祝你好运, 大卫
答案 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