2

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

org.xml.sax.SAXParseException:实体“nbsp”被引用,但未声明。

我知道nbsp实体没有在 XML 中定义,但 HTML 代码不是我的,所以我不能用#160替换它(否则这将是明显的解决方案)。

我不想通过添加来修改 HTML 代码<!DOCTYPE html [ <!ENTITY nbsp "&#160;"> ]>,我宁愿保持代码不变。

有没有其他方法可以解决这个问题?我知道HTMLDocumentBuilderXmlUnit 中有一个类,但我找不到好的文档或示例。

4

2 回答 2

0

您可以使用引用MathML DTD的 DOCTYPE 声明:

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

或相同的本地副本。

于 2013-05-10T16:53:16.603 回答
0

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

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

瞧!

于 2020-02-27T16:24:16.787 回答