Activity for XML Unit

  • Stefan Bodewig Stefan Bodewig posted a comment on discussion Open Discussion

    adjusted the NUnit 3.x constraints so they should work for NUnit 4.x as well. Issue #40. add a new ElementSelectors.ByNameAndAllAttributes variant that filters attributes before deciding whether elements can be compared. Inspired by Issue #xmlunit/259 Nodes.GetMergedNestedText and Nodes.StripElementContentWhitespace had the same problem of not knowning about XmlWhitespace that caused Issue #38. And neither of the methods could deal with XmlSignificantWhitespace at all. add XmlWhitespaceStrippedSource,...

  • Stefan Bodewig Stefan Bodewig created a blog post

    XMLUnit.NET 2.10.0 Released

  • Stefan Bodewig Stefan Bodewig posted a comment on discussion Open Discussion

    add a new ElementSelectors.byNameAndAllAttributes variant that filters attributes before deciding whether elements can be compared. Inspired by Issue #259 By default the TransformerFactorys created will now try to disable extension functions. If you need extension functions for your transformations you may want to pass in your own instance of TransformerFactory and TransformerFactoryConfigurer may help with that. Inspired by Issue #264 JAXPXPathEngine will now try to disable the execution of extension...

  • Stefan Bodewig Stefan Bodewig created a blog post

    XMLUnit for Java 2.10.0 Released

  • Richard Zhu Richard Zhu posted a comment on discussion Open Discussion

    Since I can't get the XPath from XmlAttribute or XmlNode parameter passed into the predicate, how can I determine the XPath of the element to filter? Shouldn't the XPath be passed in as a parameter? Thanks.

  • Stefan Bodewig Stefan Bodewig posted a comment on discussion Open Discussion

    added NodeFilters#SatisfiesAll and SatifiesAny methods to make it easier to combine multiple node filters. added to simplify the use case of xmlunit/#249 when documents contained element content whitespace represented by System.Xml.XmlWhitespace the types and methods that are supposed to strip or normalize whitespace would fail. Issue #38

  • Stefan Bodewig Stefan Bodewig created a blog post

    XMLUnit.NET 2.9.2 Released

  • Stefan Bodewig Stefan Bodewig posted a comment on discussion Open Discussion

    fixed some AssertJ tests that didn't work on Windows. Issue #252 and PR #253 by @Boiarshinov added overloads to ElementSelectors.byXPath that accept a XPathEngine argument. Issue #255 added Cyclone DX SBOMs to release artifacts

  • Stefan Bodewig Stefan Bodewig created a blog post

    XMLUnit for Java 2.9.1 Released

  • Stefan Bodewig Stefan Bodewig posted a comment on discussion Open Discussion

    The major change of XMLUnit for Java 2.9.0 is the addition of a new module xmlunit-jakarta-jaxb-impl that can be used in addition to xmlunit-core when you want to use the Jakarta XML Binding API in version 3. For details please see the user's guide. The full list of changes of XMLUnit for Java 2.9.0 is: added a new module xmlunit-jakarta-jaxb-impl that makes Input.fromJaxb use jakarta.xml.bind rather than javax.xml.bind. For more details see the User's Guide. This change is not fully backwards compatible....

  • Stefan Bodewig Stefan Bodewig created a blog post

    XMLUnit for Java 2.9.0

  • Stefan Bodewig Stefan Bodewig posted a comment on discussion Open Discussion

    I've just released new minor versions of XMLUnit for Java and XMLUnit.NET. Both releases are improvements. Changelog for XMLUnit for Java 2.8.4: improved comparison performance for documents with many siblings based on a suggestion by @gerpres made in #236 Changelog for XMLUnit.NET 2.9.1 improved comparison performance for documents with many siblings based on a suggestion by @gerpres made in Java Issue xmlunit/#236 added a new FullDescription method to Diff that provides a string-representation...

  • Stefan Bodewig Stefan Bodewig created a blog post

    XMLUnit for Java 2.8.4 and XMLUnit.NET 2.9.1 Released

  • Stefan Bodewig Stefan Bodewig posted a comment on discussion Open Discussion

    This release fixes a shortcoming of the AssertJ support modules and adds a new convenience feature to the Diff class. The full list of changes: added a new fullDescription method to Diff that provides a string-representation of all differences - not just the first one like toString does. PR #235 fixing #232 by @Boiarshinov made sure AssertJ's methods to override the assertion message like withFailMessage are honored. #225 adjusted unit tests so they pass when AssertJ 3.19.0 is used. PR #212 by m...

  • Stefan Bodewig Stefan Bodewig created a blog post

    XMLUnit for Java 2.8.3

  • Stefan Bodewig Stefan Bodewig posted a comment on discussion Open Discussion

    I'm afraid this is due to the way DOM is implemented (in Java?). XMLUnit uses the DOM model when comparing XML files. This means your Java process contains two parsed tree models of the whole documents in memory at the same time - and DOM is famous for being memory intensive. At least you seem to be able to load both documents, so there probably isn't that much memory missing and you could get by with increasing your JVM's heap memory a bit when starting the process. There are alternative APIs for...

  • Shubham Arvikar Shubham Arvikar posted a comment on discussion Open Discussion

    Hello, I am trying to compare 2 large xml files which contains around 2.4m+ lines (xml file size ~ 51 MB). This is the method I have created where I am sending xmlfilepath for 2 xmls. It is working fine with some small responses but for huge one it is throwing java oom gc error. Is there any limitation of xmlunit? do we have any solution for this type of issue? public static Iterable<difference> compareXmlFiles(String response1FilePath, String response2FilePath) throws IOException, SAXException {...

  • Stefan Bodewig Stefan Bodewig posted a comment on discussion Help

    But do you know which elements are expected to hold numbers? If so, you can still use the DifferenceEvaluator approach I described. Otherwise - if you don't know which elements are to be considered numbers how should XMLUnit know? :-)

  • Jaspreet Singh Ahuja Jaspreet Singh Ahuja modified a comment on discussion Help

    I have to ignore differences such as Expected text value '1.3440000000000001E1' but was '13.44'. I have multiple such nodes with that kind of difference- so I can't predetermine which node will have that kind of values. I wish I had stakeholders like Hari Rao. :'-( , but that isn't the case and would appreciate some help. <parent> <child1>11.5 </child1> <child2> 1.3440000000000001E1 <child2> <child3> some string <child3> </child3></child3></child2></child2></parent> V/S <parent> <child1>11.5 </child1>...

  • Jaspreet Singh Ahuja Jaspreet Singh Ahuja posted a comment on discussion Help

    I have to ignore differences such as Expected text value '1.3440000000000001E1' but was '13.44'. I have multiple such nodes with that kind of difference- so I can't predetermine which node will have that kind of values. I wish I had stakeholders like Hari Rao. :'-( , but that isn't the case and would appreciate some help.

  • Stefan Bodewig Stefan Bodewig posted a comment on discussion Help

    so am I

  • Swapnil Kotwal Swapnil Kotwal modified a comment on discussion Help

    I'm talking about Map { } inside <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>

  • Swapnil Kotwal Swapnil Kotwal posted a comment on discussion Help

    I'm talking about Map { } inside ~~~ <entry key="groups_objects"> <value> <list> <entry value="Agggrp1" key="display"> <entry value="S013S71EMLN" key="value"> </entry></entry> <entry value="Agggrp5" key="display"> <entry value="S013S71GTU6" key="value"> </entry></entry> <entry value="Agggrp7" key="display"> <entry value="S013S71HVU6" key="value"> </entry></entry> </list> </value> </entry> ~~~

  • Stefan Bodewig Stefan Bodewig posted a comment on discussion Help

    You are using ElementSelectors.byNameAndText which means: when looking at lists of elements, compare those which each other that have the same element name and the same nested text. This works fine for elements like <String>S013J6S7STH</String>. In your second example you want to influence which Map elements XMLUnit compares with each other. The Map elements have no nested text at all, so they all have the same nested text and you compare them in-order. I'm not really sure what identifies the Map...

  • Swapnil Kotwal Swapnil Kotwal modified a comment on discussion Help

    I've used below DiffBuilder using 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(); It works well for shuffling the List<> values or random value in List<> as shown below...

  • Swapnil Kotwal Swapnil Kotwal modified a comment on discussion Help

    I've used below DiffBuilder using 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(); ```` It works well for shuffling the `List<>` values or random value in `List<>` as shown...

  • Swapnil Kotwal Swapnil Kotwal posted a comment on discussion Help

    I've used below DiffBuilder using 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(); ```` It works well for shuffling the `List<>` values or random value in `List<>` as shown...

  • Stefan Bodewig Stefan Bodewig posted a comment on discussion Open Discussion

    This release fixes a bug in the new AssertJ 3.x module. CompareAssert inside the AssertJ3 module swapped the expected and actual parameters when creating the assertion error. #210 by @f-lopes

  • Stefan Bodewig Stefan Bodewig created a blog post

    XMLUnit for Java 2.8.2

  • Stefan Bodewig Stefan Bodewig created a blog post

    XMLUnit for Java 2.8.1

  • Stefan Bodewig Stefan Bodewig posted a comment on discussion Help

    XMLUnit 2.8.0 has just been released and allows the TransformerFactory to be set explicitly in DefaultComparisonFormatter.

  • Stefan Bodewig Stefan Bodewig posted a comment on discussion Open Discussion

    Both releases are mostly bugfix releases. Unfortunately both are going to break backwards compatibility for some people. All modules of XMLUnit for Java now require Java7 as a minimum and the optional JAXB dependency has been updated to use the Jakarta XML Binding API. XMLUnit.NET has made ISource disposable which is going to break custom implementations. Details for XMLUnit for Java 2.8.0 changed optional JAXB dependency to use Jakarta XML Binding API PR #186 by @endrejeges bumped the bytebuddy...

  • Stefan Bodewig Stefan Bodewig created a blog post

    XMLUnit for Java 2.8.0 and XMLUnit.NET 2.9.0 Released

  • Stefan Bodewig Stefan Bodewig posted a comment on discussion Help

    You don't want to ignore the element at all, you want to ignore certain attributes on them. So AttributeFilter is what you want to use rather than NodeFilter.

  • Aashay Pilivkar Aashay Pilivkar posted a comment on discussion Help

    Hi, I am facing the same issue. I am trying to compare actual and expected XML responses using Java. For that I am using DiffBuilder. I want to ignore few date-time attributes from root node while comparing the xmls. However when I pass the with NodeFilter(node -> !node.getNodename(). equals("Nodename") ) it ignores complete xml. Could you please let me know the work around for the issue? Thanks in advance.

  • Stefan Bodewig Stefan Bodewig posted a comment on discussion Help

    I've opened https://github.com/xmlunit/xmlunit/issues/195 and will get to it sometime in the coming weeks. If there is anything else you'd need please open new issues. Thanks Stefan

  • James Murtaugh James Murtaugh posted a comment on discussion Help

    Hi Stefan, I realize that my patch is not a long term solution to the issue I just did that to make sure that was the root cause of the issue. We are using the library to compare two xml files so we would need a mechanism to allow us to specify the transform factory in the DefaultComparisonFormatter. Please let me know how you would like to proceed. Jim From: Stefan Bodewig bodewig@users.sourceforge.net Sent: Tuesday, July 28, 2020 7:41 AM To: [xmlunit:discussion] 73274@discussion.xmlunit.p.re.sourceforge.net...

  • Stefan Bodewig Stefan Bodewig posted a comment on discussion Help

    Hi Jim I don't use OSGi myself and am not intimately familiar with it. I've tried to setup things in a way, that should allow all modules to be used as OSGi bundles, so supporting the environment is a goal. OTOH we do want to support people switching the TransformerFactory using JAXP mechanisms. It is unfortunate this seems to be incompatible with OSGi. Your patch as you describe it, would hard-code Saxon for everybody, which cannot be a goal at all. I think it is possible to pass a TransformerFactory...

  • James Murtaugh James Murtaugh posted a comment on discussion Help

    To whom it may concern, We are attempting to use the xmlunit-core library methods in an OSGi application. At runtime, we ran into a situation where the TransformerFactory class was not being resolved. I have included below an explaination of a modification to the xml unit code that we used to address this issue. We are wondering if there is an existing mechanim to address OSGI loading? If not, is there any interest in developing a feature so that we do not have to maintain a separate library with...

  • Swapnil Kotwal Swapnil Kotwal posted a comment on discussion Help

    Thanks you Stefan, this will help :) On Tue, May 12, 2020 at 10:27 PM Stefan Bodewig bodewig@users.sourceforge.net wrote: Sorry I was busy elsewhere and forgot to answer here. Starting out with you ElementSelector that would use byNameAndAttributes("key") for entry - and whatever else is needed, you'd only end up with CHILD_LOOKUP differences for things the server has added and CHILD_NODELIST_LENGTH. The later could be downgraded easily in a DifferenceEvaluator using DifferenceEvaluators.downgradeDifferencesToSimilar....

  • Stefan Bodewig Stefan Bodewig posted a comment on discussion Help

    Sorry I was busy elsewhere and forgot to answer here. Starting out with you ElementSelector that would use byNameAndAttributes("key") for entry - and whatever else is needed, you'd only end up with CHILD_LOOKUP differences for things the server has added and CHILD_NODELIST_LENGTH. The later could be downgraded easily in a DifferenceEvaluator using DifferenceEvaluators.downgradeDifferencesToSimilar. For the CHILD_LOOKUP you'll have to write a small DifferenceEvaluator yourself which would return EQUAL...

  • Stefan Bodewig Stefan Bodewig posted a comment on discussion Help

    I'm sorry I have overlooked this question so far. For both platforms XMLUnit's validator is just a thin layer on top of the platform's validation engine, so I'm not surprised you see a difference between .NET and Java. You might even see diffenrences between different version of each. It shouldn't be too difficult to add an optional Predicate<ValidationProblem> as a filter one can specify that could be used to suppress certain failures. Could you please open an enhancement request over at github...

  • Stefan Bodewig Stefan Bodewig posted a comment on discussion Open Discussion

    These two releases contain an incompatible change to the (I)PlaceholderHandler interface, thus the new minor versions. The Evaluate method now receives a variable number of string arguments in addition to the textual content of the element/attribute. This allows placeholders like ${xmlunit.matchesRegex(some\s*regex)}. For XMLUnit.NET only the placeholders package has changed, for Java in addition the assertj module is now supposed to be compatible with AssertJ 3.15+. Release Notes for XMLUnit for...

  • Stefan Bodewig Stefan Bodewig created a blog post

    XMLUnit for Java 2.7.0 and XMLUnit.NET 2.8.0 Released

  • Wesley Manning Wesley Manning posted a comment on discussion Help

    Hi, In a unit test I have: Validator val2 = Validator.ForLanguage(Languages.W3C_XML_SCHEMA_NS_URI); val2.SchemaSource = new StreamSource("SettingsXmlSchema.xsd"); ValidationResult result2 = val2.ValidateInstance(new StreamSource(memStream)); Assert.True(result2.Valid); My schema contains a <xs:anyattribute namespace="##any" processcontents="lax"> element as the xml document can have extra attributes that I don't control and so don't want to check against in my schema. But XMLUnit ValidationResult"Valid"...

  • Swapnil Kotwal Swapnil Kotwal posted a comment on discussion Help

    Thanks Stefan, Assume, I have localTestXML as <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE ResourceObject PUBLIC "my_corp.dtd" "my_corp.dtd"> <ResourceObject displayName="TESTNGAD\AggUserFSP test" identity="FooBar" objectType="account" uuid="{97182a65-61f2-443c-b0fa-477d0821d8c4}"> <Attributes> </entry> <entry key="homePhone" value="6555"/> <entry key="l" value="Pune"/> <entry key="memberOf"> </Map> </Attributes> </ResourceObject> But, server Response can keep on increasing. It might add newer...

  • Stefan Bodewig Stefan Bodewig posted a comment on discussion Help

    I'm sorry if I seem to be a bit slow on this but I believe I still don't undertstand what you actually mean by partial XML data validation. This is waht I'm guessing: You've got a document that describes your tests as a sparse XML document. You are not interested in parts of the server response that are not part of the sparse tree in your document. To achive this, you will need a NodeFilter and may need to combine it with something loke an ElementSelector to figure out which parts of the tree to...

  • Swapnil Kotwal Swapnil Kotwal modified a comment on discussion Help

    I already have implemented it using CSV but my data is complex so I turned to XMLUnit library. My server can returns data of 100s of Users/Groups etc and I've to validate some of them. Considering above given XML, I can specify data into CSV as below identity,accountFlags,homePhone "FooBar",(Not_to_Validate),6555 "FooBar1",["list data1","list data2"],6555 Here , you can notice, in first row of CSV 1. I mentioned only very few partials entrys to validate and also ignored (filtered out) accountFlags=(Not_to_Validate)....

  • Swapnil Kotwal Swapnil Kotwal posted a comment on discussion Help

    I already have implemented it using CSV but my data is complex so I turned to XMLUnit library. My server can returns data of 100s of Users/Groups etc and I've to validate some of them. Considering above given XML, I can specify data into CSV as below identity,accountFlags,homePhone "FooBar",(Not_to_Validate),6555 "FooBar1",["list data1","list data2"],6555 Here , you can notice, in first row of CSV 1. I mentioned only very few partials entrys to validate and also ignored (filtered out) accountFlags=(Not_to_Validate)....

  • Swapnil Kotwal Swapnil Kotwal modified a comment on discussion Help

    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="FooBar" 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>...

  • Stefan Bodewig Stefan Bodewig posted a comment on discussion Help

    I'm afraid this is something that is easier to do for humans than to implement in code. When you look at the serverResponseXML how do you know which parts you want to compare and which are not necessary? Is it as simple as "any element that's not in localTestXML is irrelevant" or could this hide errors of extra elements suddenly appearing in unexpected places?

  • Swapnil Kotwal Swapnil Kotwal posted a comment on discussion Help

    Thanks Stefan for the response. Sorry, I'm just putting baby steps and messed up certain things. From serverResponseXML I might have some entrys I want to ignore during comparison and I might specify partial localTestXML which not necessarily should have all entrys from serverResponseXML (i.e. I want to validate with partial local XML(It can be partial XML or as complete as serverResponseXML) with some additional filters) What would be best way to achive it?

  • Stefan Bodewig Stefan Bodewig posted a comment on discussion Help

    assuming https://sourceforge.net/p/xmlunit/discussion/73274/thread/b01a104e75/#6e65 was meant to go here: You really need to answer to yourself what it is that makes you know which entrys to compare to each other. Don't thnk in terms of XPaths, think in terms of your logical data model. And once you've understood what is important in your data model, then - and only then - start thinking about how this translates to XML structure. It is not unlikely that implementing a NodeFilter or ElementSelector...

  • Stefan Bodewig Stefan Bodewig posted a comment on discussion Help

    maybe your question was supposed to be added to https://sourceforge.net/p/xmlunit/discussion/73274/thread/5481136c30/ instead?

  • Stefan Bodewig Stefan Bodewig posted a comment on discussion Help

    I don't know the XML you are trying to comapre. The difference you mention says there are different numbers of elements nested in Map between control and test. I have no idea how this relates to XPath. Most probably I'm missing some context that you have :-)

  • Stefan Bodewig Stefan Bodewig posted a comment on discussion Help

    checkForSimilar and checkForIdentical are mutually exclusive and the las one you set wins. Unless you you provide a DifferenceEvaluator that downgrades node order differences to IDENTICAL you will never get better than SIMILAR with swapped nodes. So if you are really aiming for an identical result you will need to override the DifferenceEvaluator in use as well. The ElementSelector's job is to make XMLUnit match the nodes with each other that you consider to be "the same nodes", it does not make...

  • Swapnil Kotwal Swapnil Kotwal posted a comment on discussion Help

    Thanks Stefan, This worked as expected but still I'm getting error as Expected child nodelist length '22' but was '21' - comparing <Map...> at /ResourceObject[1]/Attributes[1]/Map[1] to <Map...> at /ResourceObject[1]/Attributes[1]/Map[1] [java] Expected child 'entry' but was 'null' - comparing <entry...> at /ResourceObject[1]/Attributes[1]/Map[1]/entry[23] to <NULL>} For , diff = DiffBuilder .compare(control) .withTest(test) .checkForSimilar().checkForIdentical() .normalizeWhitespace() .ignoreComments()...

  • Swapnil Kotwal Swapnil Kotwal posted a comment on discussion Help

    I've a XML as below <?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"...

  • Swapnil Kotwal Swapnil Kotwal modified a comment on discussion Help

    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>...

  • Swapnil Kotwal Swapnil Kotwal posted a comment on discussion Help

    Thank you for the clarification Stefan On Sat, 11 Apr, 2020, 2:17 PM Stefan Bodewig, bodewig@users.sourceforge.net wrote: Neither accountFlags nor homePhone are element names, so your filter will not match anything. Your NodeFilter must return true unless all of the following conditions are met node is actually an Element node has an attribute named "key" the value of this attribute is either accountFralgs or homePhone private boolean filter(final Node n) { if (n instanceof Element) { final String...

  • Swapnil Kotwal Swapnil Kotwal posted a comment on discussion Help

    Thanks 😊, it makes sense. On Sat, 11 Apr, 2020, 2:07 PM Stefan Bodewig, bodewig@users.sourceforge.net wrote: Well, you do know the elements you are interested in, so you could easily do final Collection<string> expected = Arrays.asList("root", "elementA", elementB", "elementC"); ... .withNodeFilter(n -> expected.contains(n.getNodeName()))</string> XMLUnit-2 compare partial XMLs https://sourceforge.net/p/xmlunit/discussion/73274/thread/b01a104e75/?limit=25#4e1a Sent from sourceforge.net because you...

  • Stefan Bodewig Stefan Bodewig posted a comment on discussion Help

    Neither accountFlags nor homePhone are element names, so your filter will not match anything. Your NodeFilter must return true unless all of the following conditions are met node is actually an Element node has an attribute named "key" the value of this attribute is either accountFralgs or 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)...

  • David Alexis Vargas Álvarez David Alexis Vargas Álvarez posted a comment on discussion Help

    Thanks for all the help provided! I finally decided to use the "separate comparisons" approach, here's a short example of what I've done, hopefully this helps someone in the future: private static readonly ComparisonType[] ExcludedComparisons = new ComparisonType[] { ComparisonType.CHILD_NODELIST_LENGTH }; private static readonly DifferenceEvaluator DiffEvaluator = DifferenceEvaluators.DowngradeDifferencesToEqual(ExcludedComparisons); public bool CompareNodesByXPath(params string[] nodeXPaths) {...

  • Stefan Bodewig Stefan Bodewig posted a comment on discussion Help

    Well, you do know the elements you are interested in, so you could easily do final Collection<String> expected = Arrays.asList("root", "elementA", elementB", "elementC"); ... .withNodeFilter(n -> expected.contains(n.getNodeName()))

  • Swapnil Kotwal Swapnil Kotwal posted a comment on discussion Help

    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 "sailpoint.dtd" "sailpoint.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>...

  • Swapnil Kotwal Swapnil Kotwal posted a comment on discussion Help

    I have a local test XML data as below testLocalXML <root> <elementA>something different</elementA> <elementB>something else</elementB> <elementC>yet another thing</elementC> </root> but the data I'm getting from server could be large and will keep dynamically increasing e.g. Server Response <root> <elementA>something different</elementA> <elementB>something else</elementB> <elementC>yet another thing</elementC> <elementD>next data</elementD> <elementE>another data</elementE> <elementF>F data</elementF>...

  • Stefan Bodewig Stefan Bodewig posted a comment on discussion Open Discussion

    Both releases fix a common bug where the XPath reported for missing nodes could be wrong in certain edge cases. the XPath values for comparisons resulting in CHILD_LOOKUP differences could be wrong when NodeFilters were present. XMLUnit.NET Issue #29 This is the only change in XMLUnit.NET. In XMLUnit for Java the AssertJ module has also been improved and is supposed to be compatible with AssertJ 3.13+ now. The full list of changes for XMLUnit for Java: the dependencies on JAXB implementation and...

  • Stefan Bodewig Stefan Bodewig created a blog post

    XMLUnit for Java 2.6.4 and XMLUnit.NET 2.7.2 Released

  • Stefan Bodewig Stefan Bodewig posted a comment on discussion Help

    For your second problem there is no built-in solution in XMLUnit. For XMLUnit attribute values are strings and as such your attributes are clearly different. But XMLUnit offers an extension point, you can provide your own custom DifferenceEvaluator that would alter the outcome of ATTR_VALUE differences if they looked like numbers. The example in https://github.com/xmlunit/user-guide/wiki/DifferenceEvaluator shows how to react only to differences on attributes. The best way to use your own DifferenceEvaluator...

  • Reddy Reddy posted a comment on discussion Help

    Found solution for first part of the above question diff = DiffBuilder.compare(testxml) .withTest(resxml) .withNodeMatcher(new DefaultNodeMatcher(ElementSelectors.conditionalBuilder().whenElementIsNamed("ShiftAttribute").thenUse(ElementSelectors.byNameAndAttributes("ShiftAttributeCode")).elseUse(ElementSelectors.byName).build())) .build();

  • Reddy Reddy modified a comment on discussion Help

    How to ignore below element order in XMLUnit2, I find something in XMLUnit1, but trying to do in XMLunit2, please let me know if any one have any idea <shiftattribute shiftattributecode="41"> <shiftattribute shiftattributecode="17"> VS <shiftattribute shiftattributecode="17"> <shiftattribute shiftattributecode="41"></shiftattribute></shiftattribute></shiftattribute></shiftattribute> Also, please help me ignoring below differences <priceinfo amount="19999.00" "="" netamount="19999.00" discounttypes="3"...

  • Reddy Reddy modified a comment on discussion Help

    How to ignore below element order in XMLUnit2, I find something in XMLUnit1, but trying to do in XMLunit2, please let me know if any one have any idea <shiftattribute shiftattributecode="41"> <shiftattribute shiftattributecode="17"> VS <shiftattribute shiftattributecode="17"> <shiftattribute shiftattributecode="41"></shiftattribute></shiftattribute></shiftattribute></shiftattribute> Also, please help me ignoring below differences <priceinfo amount="19999.00" "="" netamount="19999.00" discounttypes="3"...

  • Reddy Reddy modified a comment on discussion Help

    How to ignore below element order in XMLUnit2, I find something in XMLUnit1, but trying to do in XMLunit2, please let me know if any one have any idea <shiftattribute shiftattributecode="41"> <shiftattribute shiftattributecode="17"> vs <shiftattribute shiftattributecode="17"> <shiftattribute shiftattributecode="41"></shiftattribute></shiftattribute></shiftattribute></shiftattribute> Also, please help me ignoring below differences <priceinfo amount="19999.00" "="" netamount="19999.00" discounttypes="3"...

  • Reddy Reddy modified a comment on discussion Help

    How to ignore below element order in XMLUnit2, I find something in XMLUnit1, but trying to do in XMLunit2, please let me know if any one have any idea <shiftattribute shiftattributecode="41"> <shiftattribute shiftattributecode="17"> vs <shiftattribute shiftattributecode="17"> <shiftattribute shiftattributecode="41"></shiftattribute></shiftattribute></shiftattribute></shiftattribute> Also, please help me ignoring below differnce <priceinfo amount="19999.00" "="" netamount="19999.00" discounttypes="3"...

  • Reddy Reddy modified a comment on discussion Help

    How to ignore below element order in XMLUnit2, I find something in XMLUnit1, but trying to do in XMLunit2, please let me know if any one have any idea <shiftattribute shiftattributecode="41"> <shiftattribute shiftattributecode="17"> vs <shiftattribute shiftattributecode="17"> <shiftattribute shiftattributecode="41"></shiftattribute></shiftattribute></shiftattribute></shiftattribute> Also, please help me ignoring below differnce <priceinfo amount="19999.00" "="" netamount="19999.00" discounttypes="3"...

  • Reddy Reddy modified a comment on discussion Help

    How to ignore below element order in XMLUnit2, I find something in XMLUnit1, but trying to do in XMLunit2, please let me know if any one have any idea <shiftattribute shiftattributecode="41"> <shiftattribute shiftattributecode="17"> vs <shiftattribute shiftattributecode="17"> <shiftattribute shiftattributecode="41"></shiftattribute></shiftattribute></shiftattribute></shiftattribute> Also, please help me ignoring below differnce <PriceInfo " Amount="19999.00" DiscountTypes="3" AMZAmount="225.00" NetAmount="19999.00"/>...

  • Reddy Reddy modified a comment on discussion Help

    How to ignore below element order in XMLUnit2, I find something in XMLUnit1, but trying to do in XMLunit2, please let me know if any one have any idea <shiftattribute shiftattributecode="41"> <shiftattribute shiftattributecode="17"> vs <shiftattribute shiftattributecode="17"> <shiftattribute shiftattributecode="41"></shiftattribute></shiftattribute></shiftattribute></shiftattribute> Also, please help me ignoring below differnce <PriceInfo " Amount="19999.00" DiscountTypes="3" AMZAmount="225.00" NetAmount="19999.00"/>...

  • Reddy Reddy modified a comment on discussion Help

    How to ignore below element order in XMLUnit2, I find something in XMLUnit1, but trying to do in XMLunit2, please let me know if any one have any idea <shiftattribute shiftattributecode="41"> <shiftattribute shiftattributecode="17"> vs <shiftattribute shiftattributecode="17"> <shiftattribute shiftattributecode="41"></shiftattribute></shiftattribute></shiftattribute></shiftattribute> Also, please help me in ignoring below differnce <PriceInfo " Amount="19999.00" DiscountTypes="3" AMZAmount="225.00"...

  • Reddy Reddy modified a comment on discussion Help

    How to ignore below element order in XMLUnit2, I find something in XMLUnit1, but trying to do in XMLunit2, please let me know if any one have any idea <shiftattribute shiftattributecode="41"> <shiftattribute shiftattributecode="17"> vs <shiftattribute shiftattributecode="17"> <shiftattribute shiftattributecode="41"></shiftattribute></shiftattribute></shiftattribute></shiftattribute> Also, please help me for skip/ignore below differnce <PriceInfo " Amount="19999.00" DiscountTypes="3" AMZAmount="225.00"...

  • Reddy Reddy modified a comment on discussion Help

    How to ignore below element order in XMLUnit2, I find something in XMLUnit1, but trying to do in XMLunit2, please let me know if any one have any idea <shiftattribute shiftattributecode="41"> <shiftattribute shiftattributecode="17"> vs <shiftattribute shiftattributecode="17"> <shiftattribute shiftattributecode="41"></shiftattribute></shiftattribute></shiftattribute></shiftattribute> Also, please help me to skip/ignore below differnce <PriceInfo " Amount="19999.00" DiscountTypes="3" AMZAmount="225.00"...

  • Reddy Reddy modified a comment on discussion Help

    How to ignore below element order in XMLUnit2, I find something in XMLUnit1, but trying to do in XMLunit2, please let me know if any one have any idea <shiftattribute shiftattributecode="41"> <shiftattribute shiftattributecode="17"> vs <shiftattribute shiftattributecode="17"> <shiftattribute shiftattributecode="41"></shiftattribute></shiftattribute></shiftattribute></shiftattribute> Also, please help me to ignore/skip below differnce <PriceInfo " Amount="19999.00" DiscountTypes="3" AMZAmount="225.00"...

  • Reddy Reddy posted a comment on discussion Help

    How to ignore below element order in XMLUnit2, I find something in XMLUnit1, but trying to do in XMLunit2, please let me know if any one have any idea <shiftattribute shiftattributecode="41"> <shiftattribute shiftattributecode="17"> vs <shiftattribute shiftattributecode="17"> <shiftattribute shiftattributecode="41"></shiftattribute></shiftattribute></shiftattribute></shiftattribute> Also, please help me to ignore below differnce <PriceInfo " Amount="19999.00" DiscountTypes="3" AMZAmount="225.00"...

  • Stefan Bodewig Stefan Bodewig posted a comment on discussion Open Discussion

    I don't think there is an easy way to do what you need without changing XMLUnit. You might gain a bit of performance by using a single XPathFactory and a single XPath instance, though. Something that might work is tracking what the difference engine is doing via a ComparisonListener and building a map of XPath to Node while the DOM is traversed. Adding the parent nodes in addition to the parent XPath would require some surgery to DOMDifferenceEngine but could probably be done without breaking the...

  • MonishaM MonishaM modified a comment on discussion Open Discussion

    In our project, we are comparing two XMLs and are selectively updating the control XML based on this comparison. In certain cases the Control/Test node is null (as fetched from the Comparison.Detail object). Manipulating / updating the Control/Test XML in such a case requires us to compute the Parent Node using some other library that requires the XPath String from the getParentXPath() method. This computation of the Parent Node node is turning out to be expensive as we need to do this for every...

  • MonishaM MonishaM posted a comment on discussion Open Discussion

    Hi Stefan, We had another question for you. Currently, we can only access the XPath of the ParentNode of a given target node (computed from the Comparison.Detail object). Is there a way to get a reference to the ParentNode directly from the Comparison.Detail object? Or atleast in a future version of XMLUnit? Have opened a new Discussion Topic for this here. Please advise.

  • MonishaM MonishaM posted a comment on discussion Open Discussion

    In our project, we are comparing two XMLs and are selectively updating the control XML based on this comparison. In certain cases the Control/Test node is null (as fetched from the Comparison.Detail object). Manipulating / updating the Control/Test XML in such a case requires us to compute the Parent Node using some other library that requires the XPath String from the getParentXPath() method. This computation of the Parent Node node is turning out to be expensive as we need to do this for every...

  • MonishaM MonishaM posted a comment on discussion Open Discussion

    Hi Stefan, We tested using 2.6.3 and it worked fine. This time the XPaths were preserved despite using NodeFilters in the Difference Evaluator. Thank you very much for such an expedited response and fix! This has been very helpful.

  • Stefan Bodewig Stefan Bodewig posted a comment on discussion Open Discussion

    The release fixes a bug in a corner-case and adds a new isNumber placeholder. The full list of changes: add a new ${xmlunit.isNumber} placeholder Issue #153 via PR #154 by @NathanAtClarity. the XPath values of a comparison should not be affected by any NodeFilter being in effect. Issue #156

  • Stefan Bodewig Stefan Bodewig created a blog post

    XMLUnit for Java 2.6.3 and XMLUnit.NET 2.7.1 Released

  • Stefan Bodewig Stefan Bodewig posted a comment on discussion Open Discussion

    Do you think you could give the 2.6.3-SNAPSHOT version a try that I've published to XMUnit's snapshot repository? This should result in the XPaths you expect.

  • Stefan Bodewig Stefan Bodewig posted a comment on discussion Help

    Let me first try to illustrate what I think you are trying to do You've got two docs like <foo> <bar> <baz>xyzzy</baz> </bar> <quux id="fred"/> </foo> <foo> <bar some-attr="I don't care about"> <baz>xyzzy</baz> </bar> <quux id="carl"/> </foo> and you are not interested in differences in foo or bar but only for the pairs of nodes that are selected by /foo/bar/baz and /foo/quux. Is this correct? One way to do it, and I think this is what you describe as your current attempt, is to use XMLUnit's XPath...

  • Stefan Bodewig Stefan Bodewig posted a comment on discussion Open Discussion

    Ah, this is an interesting twist I didn't think about - I didn't really get you've been talking about using a NodeFilter. I've created https://github.com/xmlunit/xmlunit/issues/156 and tweaked the test I added with https://github.com/xmlunit/xmlunit/commit/3cf072e13fd288da3ef5a1a83b86d5be1c05a612 - this will be fixed with the next release, probably within the next two weeks.

  • MonishaM MonishaM posted a comment on discussion Open Discussion

    The problem we are facing is that, after we filter out the node Parent with id = 0, when we compute the XPath of the nodes from the Diff object, we get XPath values that are different from the original XPath values (as per the unfiltered document object). The filtering Nodes option in XMLUnit is removing all the filtered nodes from the document object before starting to evaluate. So, when we access the test and control nodes in the diff objects from the difference iterator - the test and control...

  • David Alexis Vargas Álvarez David Alexis Vargas Álvarez posted a comment on discussion Help

    Hello, it's me again. I'm using the C# version of the framework. I've come with another question. I know there's a WithNodeFilter in the DiffBuilder class that allows to define whether to compare nodes or not . But the XmlNode doesn't provide any property nor method to get the node XPath. Basically I need a special node filter that selects the nodes to compare by XPath. There could be more than just one XPath for these cases. I've created a work around by selecting the nodes by XPath and then using...

  • David Alexis Vargas Álvarez David Alexis Vargas Álvarez posted a comment on discussion Help

    Perfect, I've implemented the custom DifferenceEvaluator and ComparisonFormatter, that solves my question. Thanks for your time!

  • Stefan Bodewig Stefan Bodewig posted a comment on discussion Open Discussion

    I'm not entirely sure I understand the issue you are describing. I think you expect the parent XPath to be /grandparent[1]/parent[2] while you get /grandparent[1]/parent[1]. Have you checked you are actually looking at child with id 2 and not 1? Without any ElementSelector XMLUnit is going to match siblings in order. This means you are comparing control <parent id="0"> to test <parent id="1">. With https://github.com/xmlunit/xmlunit/commit/b0519685c0bbab843f63ddcba88861b16037e32b I've added a unit...

  • Stefan Bodewig Stefan Bodewig posted a comment on discussion Help

    DifferenceEvaluator is the thing that decides whether a difference that has been found is important or not. You could use it to silence the difference about the number of children of Child. DifferenceEvaluator is a delegate, so any .NET method/function that matches the delegate's signature is an implementation and can be used. If you only want to suppress certain ComparisonTypestake a look at DifferenceEvaluators.DowngradeDifferencesToEqual. See also https://github.com/xmlunit/user-guide/wiki/DifferenceEvaluator...

  • David Alexis Vargas Álvarez David Alexis Vargas Álvarez modified a comment on discussion Help

    Hello, I'm currently using the latest stable C# NuGet (2.7.0). I'm new to this framework, so I'm doing some tests trying to find a way to match its functionality with my requirements. Here's my case: Control.xml <?xml version="1.0" encoding="utf-8"?> <Document> <ParentNode> <Child> <Name>Example</Name> <Description>My description</Description> <Value>100</Value> <Priority>1</Priority> <Goods> <Name>Something</Name> </Goods> </Child> </ParentNode> </Document> Test.xml <?xml version="1.0" encoding="utf-8"?>...

  • David Alexis Vargas Álvarez David Alexis Vargas Álvarez modified a comment on discussion Help

    Hello, I'm currently using the latest stable C# NuGet (2.7.0). I'm new to this framework, so I'm doing some tests trying to find a way to match its functionality with my requirements. Here's my case: Control.xml <?xml version="1.0" encoding="utf-8"?> <Document> <ParentNode> <Child> <Name>Example</Name> <Description>My description</Description> <Value>100</Value> <Priority>1</Priority> <Goods> <Name>Something</Name> </Goods> </Child> </ParentNode> </Document> Test.xml <?xml version="1.0" encoding="utf-8"?>...

  • David Alexis Vargas Álvarez David Alexis Vargas Álvarez posted a comment on discussion Help

    Hello, I'm currently using the latest stable C# NuGet (2.7.0). I'm new to this framework, so I'm doing some tests trying to find a way to match its functionality with my requirements. Here's my case: Control.xml <?xml version="1.0" encoding="utf-8"?> <Document> <ParentNode> <Child> <Name>Example</Name> <Description>My description</Description> <Value>100</Value> <Priority>1</Priority> <Goods> <Name>Something</Name> </Goods> </Child> </ParentNode> </Document> Test.xml <?xml version="1.0" encoding="utf-8"?>...

1 >