gpt4 book ai didi

XMLUnit 比较 Xml 忽略序列

转载 作者:数据小太阳 更新时间:2023-10-29 02:13:54 26 4
gpt4 key购买 nike

我需要比较 2 个 XML,我正在使用我的自定义差异监听器忽略子节点序列和属性列表序列:

if (difference.getId() == DifferenceConstants.CHILD_NODELIST_SEQUENCE_ID ||
difference.getId() == DifferenceConstants.ATTR_SEQUENCE_ID)
return DifferenceListener.RETURN_IGNORE_DIFFERENCE_NODES_IDENTICAL;

我的代码适用于:

    <xml>
<elem1 att1="abc" att2="def"></elem1>
<elem1></elem1>
</xml>

    <xml>
<elem1></elem1>
<elem1 att2="def" att1="abc"></elem1>
</xml>

但是我需要它来考虑这些 XML 也是相同的:

<xml>
<elem1>
<elem2>
<id>ABC</id>
.....
</elem2>
</elem1>
<elem1>
<elem2>
<id>DEF</id>
.....
</elem2>
</elem1>
</xml>

<xml>
<elem1>
<elem2>
<id>DEF</id>
.....
</elem2>
</elem1>
<elem1>
<elem2>
<id>ABC</id>
.....
</elem2>
</elem1>
</xml>

在这里,我想要比较以考虑两个 XML 中的两个 elem1 是相同的,因为只是序列被混淆了。所以我需要我的代码在不止一个嵌套级别上工作。 XMLUnit 有可能吗?请帮助任何人?

我找到了一个临时解决方案(无法在 8 小时内对我自己的问题添加评论):

我之前用 ElementNameAndAttributeQualifier 覆盖了 ElementQualifier,如果我将其更改为 RecursiveElementNameAndTextQualifier,我可以获得我想要的结果

xmlDiff.overrideElementQualifier(new RecursiveElementNameAndTextQualifier());

您还可以使用 multiLevelElementName 和 TextQualifier 进行更深层次的 XML 比较。递归仅适用于级别 1。

详情可引用:http://xmlunit.sourceforge.net/userguide/html/ar01s03.html#ElementQualifier例20

我需要匹配元素名称和属性,这匹配名称和文本..但仍然..现在它的工作,所以我正在使用它..

如果我找到更好的解决方案会更新

希望这对某人有帮助:)

最佳答案

ElementQualifier 告诉 XMLUnit 比较哪些元素。如果内置的 ElementQualifier 不适合您,您可以自己提供接口(interface)的实现。

关于XMLUnit 比较 Xml 忽略序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17731259/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com