3

给定一个像

<root>
  <row>
    <a>2</a>
    <b>1</b>
    <c>8</c>
  </row>
  <row>
    <b>5</b>
    <a>2</a>
    <c>8</c>
  </row>
  <row>
    <a>2</a>
    <c>8</c>
    <b>6</b>
  </row>
</root>

有没有一种简单的方法来断言 XML 文档在 XMLUnit 中的元素 B 上排序

编辑:我对一个软件有一个奇怪的问题,我无法更改任何给定节点中 XML 标记的值需要按特定顺序排列的位置。我希望我的测试工具在任何其他验证之前强制执行这组规则。

4

3 回答 3

2

使用以下简单 XPath 1.0 表达式的值

not(//b[. > following::b])

于 2010-04-27T12:56:59.810 回答
1

您可以围绕 XPath 选择构建断言。

可能最简单的方法是使用 XPath 表达式/root/row/b,请求NODESET结果类型,然后将文本从每个结果节点复制到一个List结构中。您可以断言该列表中的文本等于使用该Arrays.asList()方法创建的“预期”列表(我假设您使用的是 Java)。

于 2010-04-26T21:35:28.640 回答
1

如果可以执行 XQuery,那么 XQuery 断言:

every $i in (1 to count ($x/row) - 1)
satisfies 
   let $j :=  $i + 1   
   return number($x/row[$i]/b) <= number($x/row[$j]/b)

其中 $x 是文档,如果行按 b 的升序排列,则为 true,否则为 false

于 2010-04-27T06:33:54.570 回答