java - 使用放心的 XML 映射

标签 java groovy rest-assured gpath

我正在尝试使用rest-assured 设置集成测试。在我的一个测试用例中,我必须使用 Rest-assured 的 XmlPath 来验证 XML 文件的某些属性,该 XmlPath 似乎使用 Groovy 的 GPath。

我有一个具有以下结构的 XML 文档(ID 是唯一的):

<rootelement>
    <someelement id="1234" type="a">
      <property key="hello" value="world" />
      <property key="name" value="a name" />
      <property key="status" value="new" />
      <child target="645823" type="a" />
      <child target="7482" type="b" />
      <child target="8942" type="c">
         <property key="pro" value="yes" />
      </child>
    </someelement>
    <someelement>
        ...
    </someelement>
<rootelement>
理想情况下,给定一个 someelement id,我想获取它的属性的映射,即假设给定的 someelement id 是 1234,我想获取一个如下所示的映射: {"hello": "world", "name": "a name", "status": "new"}。我该怎么做?我知道 XmlPath 中有一个 getMap 方法,但我不知道必须使用哪个表达式。

如果无法以映射的形式获取属性,我会满足于获取键列表和值列表。再说一次,我不知道我必须使用哪种表达方式。我尝试过类似的事情:

xmlPath.getList("**.find {it.@id = '1234'}.property.@key", String.class)

但是,它没有找到任何东西。

最佳答案

您可以使用 Groovy 执行此操作(假设 xml 是包含您的 xml 的字符串)

def map = new XmlParser().parseText( xml )
                         .someelement
                         .find { it.@id == '1234' }
                         .property
                         .collectEntries { [ it.@key, it.@value ] }

assert map == [ hello:'world', name:'a name', status:'new' ]

从未使用过放心,所以我在这方面无法提供太多帮助:-(

关于java - 使用放心的 XML 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14627404/

相关文章:

java - 如何制作泛型的构造函数

java - Jodatime 计算 2 个日期范围(几乎是一年)之间的期间的错误

java - 尝试将 Assets 文件夹中找到的数据库复制到应用程序的数据库文件夹中时遇到的问题

grails - URLMapping将所有请求定向到单个 Controller /操作

java - 如何通过 RestAssured 配置和发送多部分请求

Java Web应用快速开发工具——元数据驱动

groovy - 无法从模型模板呈现日期

groovy - Groovy *。运营商

java - MockMvc、RestAssured 和 TestRestTemplate 有什么区别?

java - 放心 : Making a GET request with a parameters map