我正在尝试将以下 url 解析为 Java 中的 DOM 文档:http ://www.op.org/en/rss-category-home/8 。
但是,当我这样做时,我收到以下错误:
13:51:38,470 ERROR ~ Error processing site Site 1
org.xml.sax.SAXParseException: The entity "acirc" was referenced, but not declared.
at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:124)
at logic.server.RssReader.readRss(RssReader.java:44)
at logic.server.GatherData.doJobWithResult(GatherData.java:49)
at logic.server.GatherData.doJobWithResult(GatherData.java:1)
我在某处读到当前 JRE 中的 Xerces 解析器存在与此相关的错误,因此下载了 Xerces2 2.11.0,但仍然有同样的问题。
我怎样才能解决这个问题。我无法控制 RSS 提要本身,但需要解析 XML 来处理文章。
我的代码是: DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = dbf.newDocumentBuilder();
Document dom = builder.parse(rssUrl.openStream());
NodeList nodes = dom.getElementsByTagName("item");
etc. etc.
非常感谢解决此问题的任何帮助!
编辑: 如果我会尝试下面的解决方案并添加 DTD,我会在哪里做呢?当前的 RSS 元素是:
<rss version="2.0" xml:base="http://www.op.org/en/rss-category-home/8" xmlns:dc="http://purl.org/dc/elements/1.1/" content="http://purl.org/rss/1.0/modules/content/" dc="http://purl.org/dc/terms/" foaf="http://xmlns.com/foaf/0.1/" og="http://ogp.me/ns#" rdfs="http://www.w3.org/2000/01/rdf-schema#" sioc="http://rdfs.org/sioc/ns#" sioct="http://rdfs.org/sioc/types#" skos="http://www.w3.org/2004/02/skos/core#" xsd="http://www.w3.org/2001/XMLSchema#">
或者我会将它添加到每个包含 XHTML 代码的“描述”元素中,就像这样?我后来尝试了这个解决方案,但它仍然给出了同样的错误。
<description xmlns="http://www.w3.org/1999/xhtml">