我正在尝试使用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/