我正在尝试使用feed4j库制作RSS阅读器,并编写了以下简单代码:

import java.net.URL;

import it.sauronsoftware.feed4j.FeedParser;
import it.sauronsoftware.feed4j.bean.Feed;
import it.sauronsoftware.feed4j.bean.FeedHeader;
import it.sauronsoftware.feed4j.bean.FeedItem;
import javax.swing.*;

public class LettoreRSS{
    public static void main(String[] args) throws Exception
    {
        URL url = new URL("myxmlurl");
        Feed feed = FeedParser.parse(url);
        int items = feed.getItemCount();
        FeedHeader header = feed.getHeader();
        int dim=50;

        JFrame frm = new JFrame(header.getTitle()+" - Last News");
        frm.setResizable(false);
        frm.getContentPane().setLayout(null);
        frm.setBounds(10, 10, 600, 600);
        frm.setVisible(true);
        frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        for (int i=0;i<items;i++)
        {
            FeedItem item = feed.getItem(i);
            JLabel label = new JLabel();
            label.setBounds(0, dim*i, 600, 50);
            label.setHorizontalAlignment(SwingConstants.CENTER);
            label.setText(item.getTitle()+"   "+item.getPubDate());
            frm.add(label);
        }

    }
}


但是有一个问题:当我启动程序时,他写了标题,但puDate的所有内容都为“空”(我尝试为标头(FeedHeader标头)写一个标签,而header.getPubDate()给我解决了吗?正确地日期,对您来说,对我尝试的某些xml来说都是一样的。
我该如何解决?
谢谢!

最佳答案

我遇到了同样的问题,我发现这是因为it.sauronsoftware.feed4j.Constants.java中定义的日期格式对我的供稿而言是错误的。所以我实现了自己的获取日期的方法。喜欢:

for (int i = 0; i < feedItem.getNodeCount(); i++) {
            RawNode node = feedItem.getNode(i);
            if (node instanceof RawElement) {
                RawElement element = (RawElement) node;
                String name = element.getName();
                String value = element.getValue();
                if (value == null) {
                    return null;
                }
                if (name.equals(FEED_DATE_TAG)) {
                    try {
                        return new SimpleDateFormat(FEED_DATE_FORMAT, Locale.US).parse(value);
                    } catch (ParseException e) {
                        logger.error("could not parse date : {} ", e.getMessage());
                        return null;
                    }
                }
            }
        }


feed4j日期格式化程序是:public DateFormat RFC_822_DATE_FORMAT = new SimpleDateFormat(
            “ EEE”,'dd''MMM''yyyy''HH:mm:ss''z”,Locale.US);

关于java - RSS库'feed4j'.getPubDate()给'null',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28656789/

10-09 05:20