如何从Google App Engine阅读RSS?获取JDOM无法创建SAX解析器

时间:2010-02-20 15:28:12

标签: java google-app-engine rss

我正在尝试编写一个简单的Google App Engine网站,该网站会读取外部RSS Feed。我正在使用ROME和JDOM,但我得到的结论是ROME与Google App Engine不兼容,以及如何获取数据。

ROME使用 SyndFeedInput 类的 build 方法,但我找不到如何将其与Google App Engine和URL Fetch连接的方法。

我的示例代码是:

URL url = new URL(rss_url);
Reader r = new InputStreamReader(url.openStream());
SyndFeed feed = new SyndFeedInput().build(r);

但在我的第三排,我得到了一个

java.lang.IllegalStateException: JDOM could not create a SAX parser

如果我在一个独立的应用程序中运行代码,它会起作用,但是当我在本地通过Google App Engine触发代码时,我得到了例外。

我做错了什么以及我可以尝试哪些替代方案来阅读外部RSS?

3 个答案:

答案 0 :(得分:1)

看起来GAE不支持ROME:

http://old.nabble.com/ROME-and-AppEngine-td23290454.html

http://code.google.com/p/googleappengine/issues/detail?id=1367

似乎解决方法是在应用程序中包含Xerces JAR的副本,以便JDOM不会尝试从GAE本身加载它。

答案 1 :(得分:1)

为我工作:GAE 1.4.0罗马1.0 jdom 1.1.1 xercesImpl-2.11.0.jar xml-apis.jar

答案 2 :(得分:0)

JDOM可以解决这个问题,然后解决了ROME的问题

将xercesImpl-x.x.x.jar放在war / WEB-INF / lib

参见http://code.google.com/p/googleappengine/issues/detail?id=1367 许多人复制的不仅仅是xercesImpl或包含xerces的库(例如xalan的一些发行版),但xercesImpl就是你所需要的。

它仍然是一个解决方法,因为看起来JDOM没有正确使用JAXP来加载GAE的SAX解析器。

为我工作: GAE 1.3.7 罗马1.0 jdom 1.1.1 xercesImpl-2.6.1.jar