From: SourceForge.net <no...@so...> - 2008-04-04 15:47:08
|
Feature Requests item #1877458, was opened at 2008-01-22 16:50 Message generated for change (Comment added) made by bodewig You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=377771&aid=1877458&group_id=23187 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: XMLUnit for Java Group: None >Status: Pending >Resolution: Fixed Priority: 5 Private: No Submitted By: Olivier Armand (extended) Assigned to: Nobody/Anonymous (nobody) Summary: Support for XML entities comparison Initial Comment: The DifferenceEngine's JavaDoc ( http://xmlunit.sourceforge.net/api/org/custommonkey/xmlunit/DifferenceEngine.html ) indicates: "Nodes of other types (eg ENTITY_NODE) will be skipped." This means that for example this test case fails: assertXMLEqual("<root>bla\r\nbla</root>", "<root>bla
\nbla</root>"); I suppose this is because XmlUnit sees \r\n on one side and only \n on the other side since 
 is skipped. In my case the control and the test are generated by different processing chain (and XML parsers/serializers), which may produce either entities or standard characters. XMLUnit.setNormalizeWhitespace(true); seems to be a solution for the special case of this entity, but true support for XML entities comparison would be much better. ---------------------------------------------------------------------- >Comment By: Stefan Bodewig (bodewig) Date: 2008-04-04 17:47 Message: Logged In: YES user_id=113148 Originator: NO my fault, the " case passes even without the setExpandEntityReferences flag and the 
 case fails even with the flag. My best guess is that 
 simply doesn't expand to the same thing as \r. assertXMLEqual("<root>bla \nbla</root>", "<root>bla
\nbla</root>") passes as well, with and without explicit entity reference expansion. Anyway, I've added the flag now. I'd be grateful if you could test XMLUnit's svn trunk, set the flag and see whether it resolves the issues you see (apart from the \r case). http://xmlunit.svn.sourceforge.net/viewvc/xmlunit?view=rev&revision=261 ---------------------------------------------------------------------- Comment By: Stefan Bodewig (bodewig) Date: 2008-04-04 17:29 Message: Logged In: YES user_id=113148 Originator: NO If I change your example to assertXMLEqual("<root>bla1\nbla</root>", "<root>bla1\nbla</root>"); it passes for me, so there is something strange with the expansion of a carriage return. My reading of EntityReference's Javadocs "Note that character references and references to predefined entities are considered to be expanded by the HTML or XML processor so that characters are represented by their Unicode equivalent rather than by an entity reference." is that we can rely on the parser to expand simple character references and my test with "1" -> "1 seems to confirm this. If I use " and \" it fails, again. I'll throw in a property for XMLUnit that invokes DocumentBuilderFactory.setExpandEntityReferences for more control, we'll see how that works out. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=377771&aid=1877458&group_id=23187 |