XMLUnit - 重复元素名称的不同元素选择器
XMLUnit - different element selector for duplicate element names
我使用 XMLunit 比较 XMLs.i 有 xml 如下。
<e>
<accounts>
<number>56482</number>
<name>ererr</name>
</accounts>
</e>
<indicator>
<e>
<name>name1</name>
<value>value1<value>
</e>
<e>
<name>name2</name>
<value>value2<value>
</e>
</indicators>
如上 xml,我需要为不同的 e 编写不同的元素选择器条件,即我需要为 //e 编写一个单独的元素选择器条件
以及 //indicator/e 的不同元素选择器条件。现在我正在使用下面的代码
ElementSelectors.conditionalBuilder()
.whenElementIsNamed("e").thenUse(ElementSelectors.byXPath("//indicator/e/name",ElementSelectors.byNameAndText))
.elseUse(ElementSelectors.byName)
.build();
但这个条件最适合//indicator/e。我需要有一个单独的条件,例如
ElementSelectors.conditionalBuilder()
.whenElementIsNamed("e").thenUse(ElementSelectors.byXPath("//e/number",ElementSelectors.byNameAndText))
.elseUse(ElementSelectors.byName)
.build();
我在这里很震惊,请建议我如何克服这个问题。
条件生成器提供更通用的 when
,它接受 Predicate<? super Element>
,因此您可以编写更具体的条件,例如
when(e => "e".equals(e.getNodeName())
&& "indicator".equals(e.getParentNode().getNodeName()))
当然你最好添加一些空检查和错误处理,但你明白了。
我使用 XMLunit 比较 XMLs.i 有 xml 如下。
<e>
<accounts>
<number>56482</number>
<name>ererr</name>
</accounts>
</e>
<indicator>
<e>
<name>name1</name>
<value>value1<value>
</e>
<e>
<name>name2</name>
<value>value2<value>
</e>
</indicators>
如上 xml,我需要为不同的 e 编写不同的元素选择器条件,即我需要为 //e 编写一个单独的元素选择器条件 以及 //indicator/e 的不同元素选择器条件。现在我正在使用下面的代码
ElementSelectors.conditionalBuilder()
.whenElementIsNamed("e").thenUse(ElementSelectors.byXPath("//indicator/e/name",ElementSelectors.byNameAndText))
.elseUse(ElementSelectors.byName)
.build();
但这个条件最适合//indicator/e。我需要有一个单独的条件,例如
ElementSelectors.conditionalBuilder()
.whenElementIsNamed("e").thenUse(ElementSelectors.byXPath("//e/number",ElementSelectors.byNameAndText))
.elseUse(ElementSelectors.byName)
.build();
我在这里很震惊,请建议我如何克服这个问题。
条件生成器提供更通用的 when
,它接受 Predicate<? super Element>
,因此您可以编写更具体的条件,例如
when(e => "e".equals(e.getNodeName())
&& "indicator".equals(e.getParentNode().getNodeName()))
当然你最好添加一些空检查和错误处理,但你明白了。