首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用rest-assured从XML映射

使用rest-assured从XML映射
EN

Stack Overflow用户
提问于 2013-01-31 21:53:09
回答 1查看 1.6K关注 0票数 1

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

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

代码语言:javascript
复制
<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>

理想情况下,给定某个元素id,我希望获得其属性的映射,即假设给定的某个元素id为1234,我希望获得如下所示的映射:{"hello": "world", "name": "a name", "status": "new"}。我该怎么做呢?我知道在XmlPath中有一个getMap方法,但是我不知道我必须使用哪个表达式。

如果不能以map的形式获取属性,我将满足于获得键的列表和值的列表。再说一次,我不知道我必须使用哪个表达式。我试过这样的方法:

代码语言:javascript
复制
xmlPath.getList("**.find {it.@id = '1234'}.property.@key", String.class)

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-31 22:00:14

您可以使用Groovy来实现这一点(假设xml是包含您的xml的字符串)

代码语言:javascript
复制
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' ]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14627404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档