gpt4 book ai didi

java - 使用 Rome 设置每个项目的来源

转载 作者:行者123 更新时间:2023-11-30 01:39:38 26 4
gpt4 key购买 nike

我正在使用Rome将多个提要合并为一个。它很大程度上基于this example在 Rome 网站上。

我正在创建一个 RSS 2.0 提要,将其另存为 (W3C) 文档,然后传递到样式表以转换为 HTML。

我的要求之一是显示每个条目的来源(原始网站的链接和名称)(因为它们可以来自各种来源)。

根据 RSS 规范,有一个 optional source attribute每件。Rome 似乎通过 SyndEntry 接口(interface)上的 setSource 方法来支持这一点。但是,将其设置为原始 Feed 的 SyndFeed 似乎不会设置此属性。

我输出的文档在项目中不包含源元素。

关于我可能做错了什么的任何线索,或者关于做我想做的事情的替代方法的建议?

提前致谢,达伦。

最佳答案

我知道回复有点晚了,但也许稍后有人会使用它。我已经用 Rome 1.0做到了。

您可以定义自己的转换器和生成器。

我需要一个 RSS 2.0 提要,其中项目中包含源字段。因此,对于转换器和生成器,我通过 ROME 扩展了 RSS 2.0 的实现。

首先我们需要一个转换器。就是那个将填充源的人

/**
* This is a convertor for RSS 2.0 setting source on output items
*/
public class ConverterForRSS20WithSource extends ConverterForRSS20 {

/**
* Default Constructor
*/
public ConverterForRSS20WithSource() {
this("rss_2.0_withSource");
}

/**
* Constructor with type
* @param type
*/
protected ConverterForRSS20WithSource(String type) {
super(type);
}

/**
* @see com.sun.syndication.feed.synd.impl.ConverterForRSS094#createRSSItem(com.sun.syndication.feed.synd.SyndEntry)
*/
@Override
protected Item createRSSItem(SyndEntry sEntry) {
Item item = super.createRSSItem(sEntry);
if(sEntry.getSource() != null
&& StringUtils.isNotBlank(sEntry.getSource().getUri())) {
Source s = new Source();
s.setUrl(sEntry.getSource().getUri());
s.setValue(sEntry.getSource().getTitle());
item.setSource(s);
}

return item;
}
}

然后我们需要一个生成器。它没有什么特别要做的。它必须是

/**
* Rss 2.0 Generator with source field
*/
public class RSS020GeneratorWithSource extends RSS20Generator {

/**
*
*/
public RSS020GeneratorWithSource() {
super("rss_2.0_withSource","2.0");
}

}

我们需要做最后一件事,向 Rome 声明我们的类。为此,只需将 rome.properties 放在资源的根目录下即可。不要忘记将都柏林核心添加到您的 rss.items...在该文件中只需放入

Converter.classes=my.package.ConverterForRSS20WithSource

WireFeedGenerator.classes=my.package.RSS020GeneratorWithSource

# Parsers for RSS 2.0 with source item modules
#
rss_2.0_withSource.item.ModuleParser.classes=com.sun.syndication.io.impl.DCModuleParser

# Generators for RSS_2.0 entry modules
#
rss_2.0_withSource.item.ModuleGenerator.classes=com.sun.syndication.io.impl.DCModuleGenerator

仅此而已。

关于java - 使用 Rome 设置每个项目的来源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1212891/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com