gpt4 book ai didi

java - XMLUnit-2 忽略某些嵌套的 XML 元素

转载 作者:行者123 更新时间:2023-12-01 17:30:03 25 4
gpt4 key购买 nike

我的 XML 有点复杂,我必须在比较中忽略某些条目,我怎样才能实现它?

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE ResourceObject PUBLIC "my_corp.dtd" "my_corp.dtd">
<ResourceObject displayName="TESTNGAD\AggUserFSP test" identity="CN=AggUserFSP test,OU=FSPAggeFrame,OU=unittests,DC=TestNGAD,DC=local" objectType="account" uuid="{97182a65-61f2-443c-b0fa-477d0821d8c4}">
<Attributes>
<Map>
<entry key="accountFlags">
<value>
<List>
<String>Normal User Account</String>
<String>Password Cannot Expire</String>
</List>
</value>
</entry>
<entry key="homePhone" value="6555"/>
<entry key="l" value="Pune"/>
<entry key="memberOf">
<value>
<List>
<String>CN=FSPGRP2,OU=ADAggF,OU=unittests2,DC=AUTODOMAIN,DC=LOCAL</String>
<String>CN=FSPGRP1,OU=ADAggF,OU=unittests2,DC=AUTODOMAIN,DC=LOCAL</String>
<String>CN=LocalAggFrame,OU=FSPAggeFrame,OU=unittests,DC=TestNGAD,DC=local</String>
</List>
</value>
</entry>
<entry key="objectClass">
<value>
<List>
<String>top</String>
<String>person</String>
<String>organizationalPerson</String>
<String>user</String>
</List>
</value>
</entry>
<entry key="sn" value="test"/>
<entry key="st" value="MH"/>
<entry key="streetAddress" value="SB ROAD"/>
<entry key="title" value="QA"/>
<entry key="userPrincipalName" value="AggUserFSP test@TestNGAD.local"/>
</Map>
</Attributes>
</ResourceObject>

我试过了

Diff diff = DiffBuilder
.compare(control)
.withTest(test)
.checkForSimilar().checkForIdentical()
.normalizeWhitespace()
.ignoreComments()
.ignoreWhitespace()
.withNodeFilter(node -> !(node.getNodeName().equals("accountFlags") ||
node.getNodeName().equals("homePhone"))).build();

但是,它不起作用。我应该如何忽略这里的一些 XML 条目

最佳答案

“accountFlags”和“homePhone”都不是元素名称,因此我的过滤器不会匹配任何内容。

除非满足以下所有条件,否则 NodeFilter 必须返回 true

  • 节点实际上是一个元素
  • 节点有一个名为“key”的属性
  • 此属性的值为“accountFralgs”或“homePhone”
    private boolean filter(final Node n) {
if (n instanceof Element) {
final String attrValue = ((Element) n).getAttibute("key");
// attrValue is th eempty string if the attribute is missing
return !("accountFlags".equals(attrValue) || "homePhone".equals(attrValue));
}
return true;
}

关于java - XMLUnit-2 忽略某些嵌套的 XML 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61139377/

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