Как проанализировать все типы RSS-канала в один синтаксический анализатор в Android - PullRequest
1 голос
/ 24 мая 2011

в моем приложении я пытаюсь разобрать URL канала RSS.Работает нормально, без ошибок.Но теперь я беспокоюсь о других типах RSS-лент, таких как RDF и осень.

Сначала я не имею ни малейшего представления об этих каналах.Теперь проблема в том, что в моем приложении, когда пользователь анализирует URL-адрес канала RSS, он будет работать нормально, но если пользователь анализирует канал RDF или осенний канал, я уверен, что он не получит никакого содержимого из этих каналов, поскольку открывающие тегиразличаются для всех этих каналов.

Я беспокоюсь, что это создаст проблему в моем приложении, как решить эту проблему ...

Я знаю, что должен дать открывающие теги.У меня есть логическая идея использования регистра переключателей для каждого тега, который они имеют отношение к RSS-каналу, RDF-каналу и т. Д., Но я не знаю, как это реализовать ...

Пожалуйста, кто-нибудь поможет мне .....

1 Ответ

3 голосов
/ 24 мая 2011

Я предполагаю, что в какой-то момент ваш обработчик сделает что-то вроде

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 / Осень и т. Д. При его обновлении.

...