XMLUnit中的setIgnoreWhitespace问题

时间:2012-12-12 08:52:07

标签: java xml xmlunit

我无法使用setIgnoreWhitespace让xmlunit忽略我的XML中的空格...任何想法可能出错或者我可以检查什么?

JVM:1.6,XMLUnit 1.3,IDE:JDeveloper 11.1.1.6

例如,下面返回“预期的子节点数'2',但是'1'”。如果我拿出它经过的额外空间。

@Test
public void testExample()  {
    String inputXML = "<test><innertest>data</innertest></test>";
    String expectedResultXml = "<test> <innertest>data</innertest></test>";

    XMLUnit.setIgnoreWhitespace(true);
    XMLUnit.setIgnoreComments(true);
    XMLUnit.setIgnoreDiffBetweenTextAndCDATA(true);

    try {
        assertXMLEqual("Did not match!!", expectedResultXml, inputXML);
    } catch(Exception e) {}
}

3 个答案:

答案 0 :(得分:2)

我的类路径中必须有一些不兼容的XML库。如下覆盖JAXP库解决了问题(还添加了xerces和xalan jar)。

    XMLUnit.setControlParser("org.apache.xerces.jaxp.DocumentBuilderFactoryImpl");
    XMLUnit.setTestParser("org.apache.xerces.jaxp.DocumentBuilderFactoryImpl");
    XMLUnit.setSAXParserFactory("org.apache.xerces.jaxp.SAXParserFactoryImpl");
    XMLUnit.setTransformerFactory("org.apache.xalan.processor.TransformerFactoryImpl"); 

答案 1 :(得分:1)

您看起来有点想要忽略任何空白字符,但这种情况并非如此。

请参阅XMLUnit.setIgnoreWhitespace

  

比较节点值时是否忽略空格。

     

[...]

     

设置此参数不会影响文本中的空白。

此设置并不意味着将删除(并且不检查)仅空白文本节点。这只会意味着在比较<test>元素的节点值时会忽略空格。但该测试没有引起消息。在您的情况下,检查子节点的数量确实会引发消息。

有关更详细的说明和更多配置选项(例如XMLUnit.setNormalizeWhitespace),请参阅3.8.1. Whitespace Handling

答案 2 :(得分:-1)

以@ user392909覆盖JAXP库,对我来说没有成功。

但是我项目中与另一个图书馆的冲突是根本原因。首先,我更改了一些最终修复测试的库的导入顺序。所以我能够识别冲突的库。这是j2ee.jar。

我删除了它(并且必须用tomcat-catalina.jar,tomcat-juli.jar和javamail.jar替换它来解决即将发生的编译错误。)

导入顺序不再重要,因为j2ee.jar被删除/替换,xml diff现在按预期工作。