我正在尝试使用ROME v0.8(j2sdk1.4.2_07)解析RSS提要,但无论我使用哪个提要,它总是说同样的错误。
com.sun.syndication.io.ParsingFeedException:无效的XML:错误 第14行:元素类型" meta"必须通过匹配终止 结束标记""。
import java.net.URL;
import com.sun.syndication.feed.synd.SyndFeed;
import com.sun.syndication.io.SyndFeedInput;
import com.sun.syndication.io.XmlReader;
public class RssTest {
public static void main(String[] args) {
try {
System.out.println("starting...");
URL feedUrl = new URL("http://www.abc.net.au/news/feed/51120/rss.xml");
SyndFeedInput input = new SyndFeedInput();
SyndFeed feed = input.build(new XmlReader(feedUrl));
System.out.println("Feed Title: " + feed.getTitle());
} catch (Exception ex) {
System.out.println("Error: " + ex.getMessage());
}
}
}
答案 0 :(得分:2)
示例中的URL看起来像格式良好的XML,并且不包含任何meta
标记,因此它应该由rome解析。未终止的meta
标记会使某些内容返回HTML页面而非实际Feed。你的代理服务器可能需要一些特殊的登录吗?
答案 1 :(得分:0)
使用InputSource
代替XmlReader
:
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
InputStream is = connection.getInputStream();
InputSource source = new InputSource(is);
SyndFeedInput input = new SyndFeedInput();
feed = input.build(source);