我如何比较类似地图的元素与 XMLUnit
How can I compare map-like elements with XMLUnit
我有以下 xml 数据:
控制:
<Data>
<propertyValues>
<propertyName>Name1</propertyName>
<value>
<text>
<value>Value1</value>
</text>
</value>
</propertyValues>
<propertyValues>
<propertyName>Name2</propertyName>
<value>
<text>
<value>Value2</value>
</text>
</value>
</propertyValues>
</Data>
测试:
<Data>
<propertyValues>
<propertyName>Name2</propertyName>
<value>
<text>
<value>Value2</value>
</text>
</value>
</propertyValues>
<propertyValues>
<propertyName>Name1</propertyName>
<value>
<text>
<value>Value1</value>
</text>
</value>
</propertyValues>
</Data>
我希望这两份文件是 "same"。
如何配置 xmlUnit 使其工作? (我使用的是 xml2.6.3 单元)
谢谢
莱昂
这与 XMLUnit 用户指南 "Selecting Nodes" 部分的 运行 示例非常相似。
您需要使用 ElementSelector
在查看元素列表时选择正确的 propertyValues
元素,然后决定比较唯一 [= 中包含相同嵌套文本的元素24=] 名为 propertyName
的元素。这直接转化为
ElementSelectors.conditionalBuilder()
.whenElementIsNamed("propertyValues")
.thenUse(ElementSelectors.byXPath("./propertyName", ElementSelectors.byNameAndText))
...
然后您需要添加任何其他规则才能使其余工作正常进行。查看示例的可见其余部分,没有模棱两可的 children 和简单的
...
.elseUse(ElementSelectors.byName)
.build();
会做。
我有以下 xml 数据:
控制:
<Data>
<propertyValues>
<propertyName>Name1</propertyName>
<value>
<text>
<value>Value1</value>
</text>
</value>
</propertyValues>
<propertyValues>
<propertyName>Name2</propertyName>
<value>
<text>
<value>Value2</value>
</text>
</value>
</propertyValues>
</Data>
测试:
<Data>
<propertyValues>
<propertyName>Name2</propertyName>
<value>
<text>
<value>Value2</value>
</text>
</value>
</propertyValues>
<propertyValues>
<propertyName>Name1</propertyName>
<value>
<text>
<value>Value1</value>
</text>
</value>
</propertyValues>
</Data>
我希望这两份文件是 "same"。
如何配置 xmlUnit 使其工作? (我使用的是 xml2.6.3 单元)
谢谢
莱昂
这与 XMLUnit 用户指南 "Selecting Nodes" 部分的 运行 示例非常相似。
您需要使用 ElementSelector
在查看元素列表时选择正确的 propertyValues
元素,然后决定比较唯一 [= 中包含相同嵌套文本的元素24=] 名为 propertyName
的元素。这直接转化为
ElementSelectors.conditionalBuilder()
.whenElementIsNamed("propertyValues")
.thenUse(ElementSelectors.byXPath("./propertyName", ElementSelectors.byNameAndText))
...
然后您需要添加任何其他规则才能使其余工作正常进行。查看示例的可见其余部分,没有模棱两可的 children 和简单的
...
.elseUse(ElementSelectors.byName)
.build();
会做。