My XML is little complex and I've to ignore certain entry
from the comparison, how would I able to achieve it ?
<?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>
I tried
Diff diff = DiffBuilder
.compare(control)
.withTest(test)
.checkForSimilar().checkForIdentical()
.normalizeWhitespace()
.ignoreComments()
.ignoreWhitespace()
.withNodeFilter(node -> !(node.getNodeName().equals("accountFlags") ||
node.getNodeName().equals("homePhone"))).build();
But, it is not working. How should I ignore some XML entry
here?
Neither "accountFlags" nor "homePhone" are element names, so my filter will not match anything.
The NodeFilter must return true unless all of the following conditions are met
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;
}