如何获取节点的元素/字段数量

时间:2015-12-15 20:36:11

标签: xml xpath spring-test-mvc

我正在使用

  • Spring MVC
  • Spring MVC Testing

在Spring MVC中,假设@Controller使用@ResponseBody返回以XML格式表示的域对象并通过print()方法,我可以确认以下内容:

Body = <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<persona>
    <id>100</id>
    <nombre>Jesús Você</nombre>
    <apellido>"Mão Nuñez"</apellido>
    <fecha>2015-12-05T22:00:07.756-05:00</fecha>
</persona>

我有以下Spring MVC测试:

resultActions.andExpect(xpath("persona").exists())
             .andExpect(xpath("persona").nodeCount(1))

             .andExpect(xpath("persona/id").exists())
             .andExpect(xpath("persona/id").string("100"))
             .andExpect(xpath("persona/nombre").exists())
             .andExpect(xpath("persona/nombre").string("Jesús Você"))
             .andExpect(xpath("persona/apellido").exists())
             .andExpect(xpath("persona/apellido").string("Mão Nuñez"))
             .andExpect(xpath("persona/fecha").exists())

直到这里一切正常。

但是,再次,为:

<persona>
    <id>100</id>
    <nombre>Jesús Você</nombre>
    <apellido>"Mão Nuñez"</apellido>
    <fecha>2015-12-05T22:00:07.756-05:00</fecha>
</persona>

观察 persona 元素/节点包含四个元素:

  • id
  • NOMBRE
  • apellido
  • 日期星

如何通过xpath我可以从该组字段/元素中的四个元素/节点获取数量?

jsonPath类似的内容,例如:

.andExpect(jsonPath('$.*', hasSize(4) ))

它也应该应用于集合:

<persona-collection>
    <persona>
        <id>88</id>
        <nombre>Manuel</nombre>
        <apellido>Jordan</apellido>
        <fecha>2015-12-05T22:00:07.750-05:00</fecha>
    </persona>
    <persona>
        <id>87</id>
        <nombre>Leonardo</nombre>
        <apellido>Jordan</apellido>
        <fecha>2015-12-05T22:00:07.750-05:00</fecha>
    </persona>
…
</persona-collection>

从我想要的集合的每个节点或元素确认它有四个元素/字段。

jsonPath类似的内容,例如:

.andExpect(jsonPath('$',hasSize(5)))
.andExpect(jsonPath('$[0]').exists())
.andExpect(jsonPath('$[0].*', hasSize(4)))
…

.andExpect(jsonPath('$[4]').exists())
.andExpect(jsonPath('$[4].*', hasSize(4)))

感谢。

0 个答案:

没有答案