Перебор записей в ленте с помощью rome

Я пытаюсь просмотреть записи канала 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 в com.emir.altantbh.FeedReader.main(FeedReader.java:47)

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


person Gandalf StormCrow    schedule 13.05.2010    source источник


Ответы (1)


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().

Смотрите также

person polygenelubricants    schedule 13.05.2010
comment
Отлично работает, но у меня есть несколько пользовательских тегов внутри ‹entry›, как мне их получить? И у меня есть ‹content›, и я понимаю, что у меня есть другой пользовательский тег, как мне его получить? Еще одна вещь, какой подход лучше (какой вы рекомендуете) итератор или дженерики - person Gandalf StormCrow; 13.05.2010
comment
@gandalf: выбор не между итераторами и дженериками, а скорее с явным или неявным итератором для каждого. Для каждого, когда это применимо, всегда лучше. - person polygenelubricants; 13.05.2010
comment
@gandalf: Что касается того, как получить содержимое, перейдите по ссылкам API, которые я дал выше, и осмотритесь. Попробуйте System.out.println(entry.getContents()); и просто поэкспериментируйте. Я никогда не использовал Rome, все, что я знаю о нем, это то, что написано в документации. - person polygenelubricants; 13.05.2010