【问题标题】:ROME API to parse RSS/Atom用于解析 RSS/Atom 的 ROME API
【发布时间】:2009-07-30 23:05:28
【问题描述】:

我正在尝试使用 ROME 库解析 RSS/Atom 提要。我是 Java 新手,所以我不了解它的许多复杂之处。


  1. ROME 是否会自动使用其模块来处理遇到的不同提要,还是我必须要求它使用它们?如果是这样,这方面的任何方向。
  2. 如何找到正确的“来源”?我试图使用item.getSource(),但它让我很适应。我想我使用了错误的界面。一些方向将不胜感激。

这是我收集数据的主要内容。 我注意到我遇到问题的两个方面,都围绕获取源的源信息。根据消息来源,我想要 CNN、FoxNews 或其他任何人,而不是作者。 从我的阅读来看,.getSource() 是正确的方法。

List<String> feedList = theFeeds.getFeeds();
List<FeedData> feedOutput = new ArrayList<FeedData>();
for (String sites : feedList ) {
  URL feedUrl = new URL(sites);
  SyndFeedInput input = new SyndFeedInput();
  SyndFeed feed = input.build(new XmlReader(feedUrl));
  List<SyndEntry> entries = feed.getEntries();
  for (SyndEntry item : entries){
    String title = item.getTitle();                 
    String link = item.getUri();
    Date date = item.getPublishedDate();
Problem here -->         **     SyndEntry source = item.getSource();
    String description;
    if (item.getDescription()== null){
      description = "";
    } else {
      description = item.getDescription().getValue();
    }
    String cleanDescription = description.replaceAll("\\<.*?>","").replaceAll("\\s+", " ");
    FeedData feedData = new FeedData(); 
    feedData.setTitle(title);
    feedData.setLink(link);
And Here -->        **      feedData.setSource(link);
    feedData.setDate(date);
    feedData.setDescription(cleanDescription);
    String preview =createPreview(cleanDescription);
    feedData.setPreview(preview);
    feedOutput.add(feedData);
    // lets print out my pieces.
    System.out.println("Title: " + title);
    System.out.println("Date: " + date);
    System.out.println("Text: " + cleanDescription);
    System.out.println("Preview: " + preview);
    System.out.println("*****");
  }
}

【问题讨论】:

  • 抱歉输出不好。我该如何在此处获取格式?我可以重新发布代码没有问题。

标签: java xml parsing atom-feed


【解决方案1】:

getSource() 肯定是错误的 - 它返回 SyndFeed 相关条目所属的条目。也许你想要的是getContributors()

就模块而言,它们应该是自动选择的。您甚至可以编写自己的插件并按照here 的描述插入

【讨论】:

  • 那么我该怎么做才能获得 rss 的实际来源。说来自 yahoo 的 RSS 提要,它会给我 YAHOO、CNN、ESPN 或其他什么?我无法弄清楚那部分。
  • 我不确定你的意思。 getAuthors() / getContributors() 没有给你你想要的吗?您要查找的字段在实际 RSS 中的什么位置?
  • getAuthors 获取的是实际作者,而不是来源。说,CNN。它给了我记者的名字,或者,foxnews@foxnewsonline,如果他们碰巧这样说的话。我想我可以遍历父提要并获取它。
【解决方案2】:

如果不使用 API 尝试从 URL 中对源进行正则表达式呢?

这是我的第一个想法,无论如何我检查了 RSS 标准化格式本身以了解此选项是否在此级别上实际可用,然后尝试向上跟踪其实现...

在 RSS 2.0 中,我找到了源元素,但它似乎在以前的规范版本中不存在 - 对我们来说不是好消息!

[ 是1 的可选子元素

它的值是该项目来自的 RSS 频道的名称,从它的 .它有一个必需的属性 url,它链接到源的 XML 化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多