XMLUnit 在为有效 xml 创建 Diff 对象时抛出 NullPointerException

XMLUnit throws NullPointerException when creating Diff object for valid xml

我正在使用 org.custommonkey.xmlunit; (version 1.2)。 在构建 Diff 对象时: Diff diff = new Diff(expected, generated);

我总是遇到 NullPointerException,因为它在 this.controlDoc = this.getManipulatedDocument(controlDoc); 上失败了。 在调试时我发现在第一个构造函数中:

public Diff(String control, String test) throws SAXException, IOException {
        this((Reader)(new StringReader(control)), (Reader)(new StringReader(test)));
    }

有适当的 xml,但是当:

public Diff(Reader control, Reader test) throws SAXException, IOException {
        this(XMLUnit.buildDocument(XMLUnit.newControlParser(), control), XMLUnit.buildDocument(XMLUnit.newTestParser(), test));
    }

被称为我在调试器 [#document: null] 中看到的。为什么呢?我尝试了很多 xml,甚至是我在互联网上找到的非常简单和小巧的 xml,但没有任何效果。

哦,我刚刚发现 XMLUnit.setIgnoreWhitespace(true); 导致了这个问题,因为在项目中我使用的是古代版本的 Saxon 库,它在 8.9 版中得到了修复,但是这个:

XMLUnit.setTransformerFactory("org.apache.xalan.processor.TransformerFactoryImpl");

很有帮助。