在我的应用程序中,我正在尝试解析RSS提要网址。它的工作正常,没有任何错误。但现在我担心其他rss饲料类型,如RDF和秋季。
起初我对这些Feed有任何想法。现在的问题是,在我的应用程序中,当用户解析RSS提要URL时,它将正常工作,但如果用户正在解析RDF提要或秋季提要,我确信它不会从这些提要中获取任何内容,因为开始标记所有这些饲料都有所不同。
我担心这会在我的应用中产生问题,如何克服这个问题...
我知道我应该给出开场标签。我有一个合理的想法是为每个标签使用switch case,它们与RSS feed,RDF feed等相关,但我不知道实现它......
请有人帮助我.....
答案 0 :(得分:3)
我假设您在处理程序中的某些时候执行类似
的操作if (localName.equals("tag")
{
// inside an <tag> field
}
在那里你肯定可以去
if ((localName.equals("tag1")) || (localName.equals("tag2") || ...)
每个开头标签名称的。也就是说,如果您在解析之前可以获取/知道提要类型,为每个提供不同的自定义xml解析器(如RSSXMLHandler,RDFXMLHandler等),并且像
那样使用它们,对我来说似乎更合适。 SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
if (feedType.equals("RSS"))
{
RSSXMLHandler mHandler = new RSSXMLHandler();
}
else if (feedType.equals("RDF"))
{
RDFXMLHandler mHandler = new RDFXMLHandler();
}
else if (andSoOn)
{
}
xr.setContentHandler(mHandler);
这样,如果一个人改变了 - 例如,假设RDF提要的格式发生了变化 - 你不必担心在更新它时会破坏RSS / Autumn等提要阅读。