微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

XMLUnit-2 使用 `withNodeMatcher` API 失败,用于 List<Map> 的随机顺序

如何解决XMLUnit-2 使用 `withNodeMatcher` API 失败,用于 List<Map> 的随机顺序

我在 DiffBuilder 下面使用 XMLUnit-2

diff = DiffBuilder.compare(control).withTest(test).checkForSimilar()
.normalizeWhitespace().ignoreComments()
.ignoreWhitespace().ignoreElementContentWhitespace()
.withNodeFilter(node -> (filter(node,attrsToIgnore)))
.withAttributeFilter(fields -> (filterFields(fields,fieldsToIgnore)))
.withNodeMatcher(new DefaultNodeMatcher(ElementSelectors.byNameAndText)).build();

它适用于打乱 List<> 中的 List<> 值或随机值,如下所示

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE ResourceObject PUBLIC "sailpoint.dtd" "sailpoint.dtd">
<ResourceObject displayName="aggaccnm1" identity="U013JFHQ59D" objectType="account">
  <Attributes>
    <Map>
      <entry key="costCenter" value="1111"/>
      <entry key="department" value="QA"/>
      <entry key="displayName" value="AggACCDN1"/>
      <entry key="groups">
        <value>
          <List>
            <String>S013J6S7STH</String>
            <String>S013S71EMLN</String>
            <String>S013S71GTU6</String>
          </List>
        </value>
      </entry>
    </Map>
  </Attributes>
</ResourceObject>

但是,当我有 List < Map {} > 时它失败了.. 可以做些什么来处理 List<String> 值的随机顺序以及 List < Map {} > 值顺序。

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE ResourceObject PUBLIC "sailpoint.dtd" "sailpoint.dtd">
<ResourceObject displayName="aggaccnm1" identity="U013JFHQ59D" objectType="account">
  <Attributes>
    <Map>
      <entry key="costCenter" value="1111"/>
      <entry key="department" value="QA"/>
      <entry key="displayName" value="AggACCDN1"/>
      <entry key="groups">
        <value>
          <List>
            <String>S013J6S7STH</String>
            <String>S013S71EMLN</String>
            <String>S013S71GTU6</String>
          </List>
        </value>
      </entry>
      <entry key="groups_objects">
        <value>
          <List>
            <Map>
              <entry key="display" value="Agggrp1"/>
              <entry key="value" value="S013S71EMLN"/>
            </Map>
            <Map>
              <entry key="display" value="Agggrp5"/>
              <entry key="value" value="S013S71GTU6"/>
            </Map>
            <Map>
              <entry key="display" value="Agggrp7"/>
              <entry key="value" value="S013S71HVU6"/>
            </Map>
          </List>
        </value>
      </entry>
    </Map>
  </Attributes>
</ResourceObject>

在上面的示例中,您可以注意到我的 List < Map {} > 和我上面的实现对于简单的 List<> 运行良好,但不适用于 List < Map {} >

我想忽略两者的顺序,有人请告诉我这是如何实现的吗?

谢谢,

交换。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。