如何解析所有类型的rss feed到android中的单个sax解析器

时间:2011-05-24 15:13:10

标签: android rss rdf feed

在我的应用程序中,我正在尝试解析RSS提要网址。它的工作正常,没有任何错误。但现在我担心其他rss饲料类型,如RDF和秋季。

起初我对这些Feed有任何想法。现在的问题是,在我的应用程序中,当用户解析RSS提要URL时,它将正常工作,但如果用户正在解析RDF提要或秋季提要,我确信它不会从这些提要中获取任何内容,因为开始标记所有这些饲料都有所不同。

我担心这会在我的应用中产生问题,如何克服这个问题...

我知道我应该给出开场标签。我有一个合理的想法是为每个标签使用switch case,它们与RSS feed,RDF feed等相关,但我不知道实现它......

请有人帮助我.....

1 个答案:

答案 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等提要阅读。