rome生成rss文件
private static final String DEFAULT_FEED_TYPE = "default.feed.type";
private static final String FEED_TYPE = "type";
private static final String MIME_TYPE = "application/xml; charset=GB2312";
private static final String COULD_NOT_GENERATE_FEED_ERROR = "Could not generate feed";
private static final String DATE_FORMAT = "yyyy-MM-dd";
private String _defaultFeedType;
public void transferFunds(ArrayList<InfoGenre> genre,ArrayList<InfoPro> pro,String genreid){
String fileName="";
InfoGenre gen=genre.get(0);
try {
String feedType = "rss_2.0";//指定rss类型
String value = "";
Properties prop = new Properties();
String url=this.getClass().getResource("/rss.properties").getPath().trim();
url=url.replaceAll("%20"," ");
InputStream fis = new FileInputStream(url);
prop.load(fis);
value = prop.getProperty("address");
fileName = value+"//"+genreid+"//"+genreid+".xml";//静态rss存放目录
String xslpath=value;
DateFormat dateParser = new SimpleDateFormat(DATE_FORMAT);
//feed是通过SyndFeedImpl的实例
SyndFeed feed = new SyndFeedImpl();
feed.setFeedType(feedType);
feed.setTitle(gen.getName());
feed.setLink(gen.getLink());
feed.setDescription(gen.getDescription());
//SyndImage image=feed.getImage();
SyndImage image = new SyndImageImpl();
if(image!=null) {
//image.setLink(gen.getImagelink());
image.setUrl(gen.getImagelink());
image.setDescription(gen.getImagedes());
image.setTitle(gen.getImagetitle());
}
feed.setImage(image);
//entries就是item集合
List<SyndEntry> entries = new ArrayList<SyndEntry>();
//一个entry就是一个item
SyndEntry entry=null;
SyndContent description;
//第一个item
InfoPro program=null;
for(int i=0;i<pro.size();i++){
program=(InfoPro)pro.get(i);
entry = new SyndEntryImpl();
entry.setTitle(program.getTitle());
entry.setLink(program.getLink());
entry.setPublishedDate(dateParser.parse(program.getPublishtime()));
description = new SyndContentImpl();
description.setType("text/plain");
description.setValue(program.getDescription());
entry.setDescription(description);
entries.add(entry);
}
//将entries加入channel
feed.setEntries(entries);
File f=new File(value+"//"+genreid);
if(!f.exists()) f.mkdirs();
Writer writer = new OutputStreamWriter(new FileOutputStream(fileName), "UTF-8");
SyndFeedOutput output = new SyndFeedOutput();
//更新客户对应栏目表isupdate字段,提示更新
if(gen.getIsupdate().equals("1")){
boolean flag=updateCusGenre(gen.getId());
}
boolean flag1=updateGenre(gen.getId());
//存盘,形成静态rss
output.output(feed,writer);
writer.close();
//存盘,形成静态html
Transform trans=new Transform();
trans.transForm(genreid, fileName, xslpath);
}
catch (Exception ex) {
ex.printStackTrace();
System.out.println("ERROR: "+ex.getMessage());
}
}
rss+xslt转换html输出
public void transForm(String genreid,String rssPath,String xslPath){
try {
//取得xml和xsl流
StreamSource source = new StreamSource(rssPath);
StreamSource style = new StreamSource(xslPath+"//template.xsl");
//设置输出流,把生成的结果传送到输出流中。构造函数中的输出流也可以是其他形式。
String value = "";
Properties prop = new Properties();
String url=this.getClass().getResource("/rss.properties").getPath().trim();
url=url.replaceAll("%20"," ");
InputStream fis = new FileInputStream(url);
prop.load(fis);
value = prop.getProperty("address");
String fileName = value+"//"+genreid+"//"+genreid+".html";//静态h存放目录
Writer outfile = new OutputStreamWriter(new FileOutputStream(fileName), "UTF-8");
StreamResult result = new StreamResult(outfile);
//初始化转换器
TransformerFactory transFactory = TransformerFactory.newInstance();
Transformer transformer = transFactory.newTransformer(style);
//设置生成html形式结果流的编码为GBK
transformer.setOutputProperty(OutputKeys.ENCODING,"GBK");
//设置html形式的流是有缩进格式的
transformer.setOutputProperty(OutputKeys.INDENT,"yes");
//转换并且输出流
transformer.transform(source,result);
}catch(Exception e) {
e.printStackTrace();
}
}
分享到:
相关推荐
本篇文章将详细介绍如何利用Java中的ROME库和JDOM库来轻松实现RSS的操作。 首先,让我们了解一下ROME库。ROME是一个开源的Java库,它为处理RSS和Atom feeds提供了一种简单的方法。它包含了RSS和Atom feed的解析、...
总结来说,Java结合Rome库提供了一种高效且易于使用的解决方案来处理RSS feed。通过简单的API调用,开发者可以轻松解析RSS数据,获取诸如标题、描述、条目等关键信息。这个实例展示了基本的使用步骤,但Rome库的功能...
对于提供的“rss订阅.txt”文件,可能包含了更详细的错误信息,可以帮助我们更精确地定位问题并提供解决方案。 总的来说,处理Rome的中文编码问题需要对XML、字符编码和Java I/O有深入的理解。通过确保源数据、解析...
【罗马(Rome)RSS解析库1.0RC2详解】 在互联网信息爆炸的时代,RSS(Really Simple Syndication)成为了订阅和聚合新闻、博客、播客等动态内容的重要工具。RSS通过XML格式提供数据,使得用户可以无需访问各个网站...
这个项目可能提供了一个简单的解决方案,让用户能够方便地处理RSS数据,而无需深入了解RSS的底层XML结构。 Rome库是Java中广泛使用的工具,用于处理RSS和Atom feeds。它提供了一系列API,简化了RSS和Atom格式的创建...
Rome 项目介绍及其在 RSS 解析中的应用 Rome 是一个基于 Java 的开源项目,提供了一组 Atom/RSS 工具类,以使得用 Java 可以更方便和快捷地操作大部分 Syndication 格式数据。Rome 需要 JDK1.4 以上版本和 JDom.jar...
**RSS开源框架ROME1.0详解** RSS(Really Simple Syndication)是一种用于发布和聚合网络内容的简单格式,常用于博客、新闻站点等,让用户能够方便地获取和订阅信息更新。在开发过程中,为了简化RSS处理,出现了...
Rome是一个广受欢迎的开源Java库,专门设计用于处理RSS(Really Simple Syndication)和Atom提要。这些格式常用于发布新闻、博客和其他在线内容的更新,使得用户可以通过订阅来获取最新的信息。Rome库提供了丰富的...
ROME支持多种RSS版本,包括RSS 0.91、0.92、1.0、2.0,以及Atom 0.3和1.0。 使用ROME,你可以创建`RssChannel`或`AtomFeed`对象,添加`Item`或`Entry`,设置feed的各种属性,如标题、描述、链接等。同时,它也提供...
标题中的“RSS.zip_Rome.jar_java r_java rss_rss feed jar_rss java”表明这是一个与Java RSS处理相关的资源包,其中包含了Rome库的jar文件和其他可能的Java代码示例。Rome是Java社区中一个流行的RSS和Atom聚合库,...
而"jdom+rome JAR包"是两个Java库,用于帮助开发者更方便地处理XML文档,并创建和管理RSS馈送。 **JDOM库** JDOM,全称Java Document Object Model,是一个为Java平台设计的DOM(Document Object Model)实现。...
在实际应用中,开发者可能会遇到的问题包括XML解析错误、RSS Feed格式不兼容、网络连接问题等,这些问题都需要通过良好的异常处理和错误排查技巧来解决。同时,为了提高性能,可能还需要对大量的RSS Feed进行异步...
标题中的“rome-1.0 jdom 第一个RSS发布实例”揭示了本次讨论的主要内容,涉及到两个关键的Java库——Rome和JDOM,以及如何使用它们来创建和发布RSS(Really Simple Syndication) feed。RSS是一种XML格式,用于发布...
ROME支持多种版本的RSS,包括RSS 0.91、RSS 1.0、RSS 2.0以及Atom 0.3和Atom 1.0。通过使用ROME,开发者可以轻松地从网站抓取和解析RSS feed,或者创建自己的RSS feed并发布到网络。 在描述中提到的“rome开发rss”...
NULL 博文链接:https://chenhao-yssy.iteye.com/blog/1074264
在"rss订阅.txt"文件中,可能包含了具体的代码示例或解决方案,建议查看该文件以获取更详细的信息。通过理解RSS订阅的工作原理,正确配置编码参数,并根据需要调整代码,可以有效解决中文字符在RSS订阅中出错的问题...
总之,"java_rss.rar"提供的这三个库——EXML.jar、RSSLibJ和Rome,为Java开发人员提供了强大的工具,使他们能够轻松地进行RSS订阅和内容管理。无论你是要创建新的RSS feed,还是从现有源抓取和处理数据,这些库都能...
Rome是为RSS聚合而开发的一个框架,让你可以快速的开发基于java的RSS阅读
Rome是为RSS聚合而开发的一个框架,让你可以快速的开发基于java的RSS阅读,发布器,支持 RSS 0.91 Netscape RSS 0.91 Userland RSS 0.92 RSS 0.93 RSS 0.94 RSS 1.0 RSS 2.0 Atom 0.3 Atom 1.0 等标准。
"rome-1.0.jar" 和 "rome.jar" 是两个这样的库,它们主要用于处理RSS(Really Simple Syndication)和Atom格式的数据,即新闻聚合和内容发布的标准。这些jar文件包含了处理这些格式的类和方法,使得开发者无需从头...