我正在使用Apache Jmeter的“正则表达式提取器”,我正在尝试从像这样的XML文件中提取一些参数: -
http://search.spotxchange.com/vast/2.00/101458?VPAID=1&cb=1421845139
我正在从此标记中提取视频文件的(高度,宽度,类型)等参数: -
<MediaFile delivery="progressive" apiFramework="VPAID" bitrate="0" height="360" width="480" type="application/x-shockwave-flash">
我使用这个正则表达式来提取这些参数: -
<MediaFile delivery="(.+?)" type="(.+?)" bitrate="(.+?)" height="(.+?)" width="(.+?)">
主要问题在于这些标签参数,它们没有按特定的顺序出现,所以例如有时候(width =“”)出现在媒体文件参数的开头,而有时它是最后一个像上一个例子。
那么,我如何编写一个有效的正则表达式提取器来提取这些参数呢?
答案 0 :(得分:1)
假设您不介意匹配&lt;之间的整个属性列表。和&gt;,你可以试试这个:
<MediaFile(\s\w+=\"[^"]+\")+>
<MediaFile # match '<MediaFile' exactly
( # start of capturing group
\s # exactly one space
\w+= # one or more letters followed immediately by an equals
\" # escaped(starting) quote mark
[^"]+ # match anything EXCEPT double-quote once or more times
\" # escaped (end) quote
)+ # close capturing group and expect that group once or more times
> # match >
使用分组'()',以便整个表达式可以在最后添加一个+,用于多个属性。但是,它不一定是捕获组。它应该是一个非捕获组('(?:regex here)')但看起来有点混乱,在这种情况下看起来不太重要。
答案 1 :(得分:1)
JMeter提供XPath Extractor,旨在从XML / XHTML响应中获取值。即要接收width
标记的MediaFile
属性,您可以使用以下XPath表达式:
//MediaFile/@width
获取delivery
属性:
//MediaFile/@delivery
等。
有关XPath Extractor和XPath语言的更多信息,请参阅以下参考: