【发布时间】:2009-11-27 13:49:26
【问题描述】:
我正在使用 JDK6 中的 Xerces 实现对 HTML 4.0 过渡文档执行 XPath 查询。使用以下代码:
XPath newXPath = XPathFactory.newInstance().newXPath();
XPathExpression xpathExpr = newXPath.compile(expression);
Object xPathResult = xpathExpr.evaluate(inputSource, XPathConstants.NODESET);
inputSource 是从 FileInputStream 构建的,我收到异常:
此消息也会打印到标准输出:
[致命错误]:20:43:引用了实体“mdash”,但未声明。如何避免这个异常?
HTML 文件是从 XML 的 XSLT 转换创建的。我认为我不一定需要它是—,我不确定。 HTML 将显示在 Java Swing 应用程序中。
我很难判断我的具体实现中的哪些信息与此问题相关。如果需要更多信息,请通过 cmets 告诉我。
所以,我误以为 HTML 是 XML(实际上根本没有考虑到这一点)。
那么,给定一个 HTML 文件,我该如何解决这个问题呢?
- 为解析器提供 HTML 4 的 DTD?
- 将
—替换为等效项。 HTML 是通过 XSLT 转换创建的,是否可以将样式表设置为将 mdash 替换为等效的数字符号? - 是否有任何库可以在将 HTML 提供给解析器之前对其进行修复?我注意到 JTidy 出于类似目的而被提及。
【问题讨论】: