XmlUnit:引用了实体“nbsp”,但未声明

时间:2013-05-10 16:49:54

标签: java unit-testing xmlunit

我需要使用XmlUnit测试像<div>&nbsp;</div>这样的XHTML代码。 Diff构造函数告诉我:

  

org.xml.sax.SAXParseException:引用了实体“nbsp”,但是   没有宣布。

我知道 nbsp 实体未在XML中定义,但HTML代码不是我的,因此我无法用#160 替换它(这将是明显的解决方案否则)。

我不想通过添加<!DOCTYPE html [ <!ENTITY nbsp "&#160;"> ]>来修改HTML代码,我更愿意保留代码而不做任何更改。

还有另一种解决这个问题的方法吗?我知道XmlUnit中有一个HTMLDocumentBuilder类,但我无法找到好的文档或示例。

2 个答案:

答案 0 :(得分:0)

您可以使用引用MathML DTD

的DOCTYPE声明
<!DOCTYPE math 
    PUBLIC "-//W3C//DTD MathML 3.0//EN"
           "http://www.w3.org/Math/DTD/mathml3/mathml3.dtd">

或相同的本地副本。

答案 1 :(得分:0)

您可以启用功能“ http://apache.org/xml/features/continue-after-fatal-error”以在实体未知的情况下不引发异常。不过,这仍然会发出警告:

documentBuilderFactory.setFeature(
            "http://apache.org/xml/features/continue-after-fatal-error",
             true);

Évoilá!