Перебирая записи кормления с Римом - PullRequest
6 голосов
/ 13 мая 2010

Я пытаюсь перебрать записи фида Atom и получить атрибут title, скажем, я нашел эту статью, я попробовал этот фрагмент кода:

for (final Iterator iter = feeds.getEntries.iterator();
     iter.hasNext(); )
{
    element = (Element)iter.next();
    key = element.getAttributeValue("href");
    if ((key != null) &&
        (key.length() > 0))
    {
        marks.put(key, key);
    }

   //Don't have to put anything into map just syso title would be enough
}

Но я получаю исключение, говоря:

java.lang.ClassCastException: com.sun.syndication.feed.synd.SyndEntryImpl не может быть приведен к org.jdom.Element at com.emir.altantbh.FeedReader.main (FeedReader.java:47)

Что я сделал не так? Кто-нибудь может направить меня к лучшему учебнику или показать, где я допустил ошибку, мне нужно пройтись по записям и извлечь значение тега title. спасибо

1 Ответ

8 голосов
/ 13 мая 2010

SyndFeed.getEntries() возвращает List из SyndEntryImpl. Вы не можете разыграть от SyndEntryImpl до org.jdom.Element.

Вы можете перебрать все SyndEntry следующим образом:

for (final Iterator iter = feed.getEntries().iterator();
     iter.hasNext(); )
{
    final SyndEntry entry = (SyndEntry) iter.next();
    String title = entry.getTitle();
    String uri = entry.getUri();
    //...
}

API ссылки


Вы также можете попробовать это, если вы используете Java 5.0 и выше:

for (SyndEntry entry : (List<SyndEntry>) feed.getEntries()) {
    String title = entry.getTitle();
    String uri = entry.getUri();
    //...
}

Здесь есть неконтролируемое приведение, но оно должно быть безопасным на основании спецификации getEntries().

Смотри также

...