0

我有以下格式的 XML:

<Root>
    <Elem1>
        <SubElem1>A</SubElem1>
        ...
    </Elem1>
    <Elem1>
        <SubElem1>B</SubElem1>
        ...
    </Elem1>
    <Elem2>
        ...
    </Elem2>
    ...
</Root>

我想指示 XmlUnit 的差异引擎忽略 ElemN 元素的顺序,但仅限于它们的“组”内。

例如:

  • 如果上一个示例中的第二个和第一个 Elem1 将更改 order => equal
  • 如果 Elem2 会在 Elem1 之前或在 Elem1 中间 => 差异

有没有办法达到这个结果?

4

1 回答 1

0

是的,这是 的工作ElementSelector。默认情况下,XMLUnit (2.x) 按元素出现的顺序比较元素,但您可以使用ElementSelector.

在您的情况下,您似乎很乐意按顺序选择元素,除非它们被命名Elem1。因为Elem1您想根据嵌套在SubElement1子项中的文本来选择对。写这样的一种方法ElementSelector可能是

ElementSelectors.ConditionalBuilder()
    .WhenElementIsNamed("Elem1")
    .ThenUse(ElementSelectors.ByXPath("./SubElem1", ElementSelectors.ByNameAndText))
    .ElseUse(ElementSelectors.Default)
    .Build();

有关更多详细信息和示例,请参阅 XMLUnit用户指南

于 2017-01-25T05:17:51.510 回答