soap - 从 jMeter 中的 SOAP 请求中删除空组
问题描述
我需要预处理使用 jMeter 中的 CSV 数据集填充的 SOAP 请求(使用 HTTP 请求)。一些绑定变量是预期的空值,但我正在测试的服务也会对这些元素执行验证。
过去有一个类似的问题(JMeter - Remove empty elements in SOAP request),但在我的情况下,我不想只清除我想清除整个块的空白元素。
示例:我想要这个
<table>
<name>businessLicenceGroup</name>
<tableRow>
<sequence>1</sequence>
<field>
<sequence>0</sequence>
<name>authority</name>
<value>AD01</value>
</field>
<field>
<sequence>1</sequence>
<name>licenceNumber</name>
<value></value>
</field>
</tableRow>
</table>
成为
<table>
<name>businessLicenceGroup</name>
<tableRow>
<sequence>1</sequence>
<field>
<sequence>0</sequence>
<name>authority</name>
<value>AD01</value>
</field>
</tableRow>
</table>
解决方案
查找空对象并删除其父节点的参考代码将类似于:
def before = prev.getResponseDataAsString()
log.info('Before: ' + before)
def xml = new groovy.util.XmlParser().parseText(before)
def nodesWithoutText = xml.'**'.findAll { it.name() && !it.text() }
def removeNode = { node ->
def field = node.parent()
def tableRow = field.parent()
tableRow.remove(field)
}
nodesWithoutText.each{removeNode(it)}
log.info('After: ' + groovy.xml.XmlUtil.serialize(xml))
上面的代码假定您的示例 XML 来自Sampler的响应,需要放入JSR223 PostProcessor
演示:
参考:
推荐阅读
- javascript - 为什么两次应用相同的数据会破坏图表?
- django - 如何正确更改 Django FileField.upload_to 属性?
- java - Java使用字节数组列表创建nativequery
- ruby-on-rails - 在 Ruby on Rails 中使用 wicked_pdf gem 时如何删除书签?
- mysql - 我的存储过程语法有什么问题?
- node.js - 有没有一种方法可以根据客户、网络爬虫和网络应用客户端来呈现不同的页面?
- ruby-on-rails - Bundler 从 Windows 运行,在 docker 映像中失败:Bundler 找不到 gem "nokogiri" 的兼容版本
- c# - 排序列表并根据顺序选择对象
- android - 使用 ImageView 淡入动画
- angular - Angular Material - Directly passing an object to a FormControl