`
阳光小菜鸟
  • 浏览: 97068 次
  • 性别: Icon_minigender_2
  • 来自: 郑州
社区版块
存档分类
最新评论

rome+xslt rss解决方案

    博客分类:
  • XML
阅读更多
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(); 
	       }
	}

分享到:
评论

相关推荐

    ROME + JDOM轻松实现RSS的操作

    本篇文章将详细介绍如何利用Java中的ROME库和JDOM库来轻松实现RSS的操作。 首先,让我们了解一下ROME库。ROME是一个开源的Java库,它为处理RSS和Atom feeds提供了一种简单的方法。它包含了RSS和Atom feed的解析、...

    java使用Rome解析Rss的实例

    总结来说,Java结合Rome库提供了一种高效且易于使用的解决方案来处理RSS feed。通过简单的API调用,开发者可以轻松解析RSS数据,获取诸如标题、描述、条目等关键信息。这个实例展示了基本的使用步骤,但Rome库的功能...

    rome 实现rss订阅,中文出错解决方法

    对于提供的“rss订阅.txt”文件,可能包含了更详细的错误信息,可以帮助我们更精确地定位问题并提供解决方案。 总的来说,处理Rome的中文编码问题需要对XML、字符编码和Java I/O有深入的理解。通过确保源数据、解析...

    rome-1.0RC2rss解析

    【罗马(Rome)RSS解析库1.0RC2详解】 在互联网信息爆炸的时代,RSS(Really Simple Syndication)成为了订阅和聚合新闻、博客、播客等动态内容的重要工具。RSS通过XML格式提供数据,使得用户可以无需访问各个网站...

    基于Rome做的Rss读和写

    这个项目可能提供了一个简单的解决方案,让用户能够方便地处理RSS数据,而无需深入了解RSS的底层XML结构。 Rome库是Java中广泛使用的工具,用于处理RSS和Atom feeds。它提供了一系列API,简化了RSS和Atom格式的创建...

    利用Rome解析Rss

    Rome 项目介绍及其在 RSS 解析中的应用 Rome 是一个基于 Java 的开源项目,提供了一组 Atom/RSS 工具类,以使得用 Java 可以更方便和快捷地操作大部分 Syndication 格式数据。Rome 需要 JDK1.4 以上版本和 JDom.jar...

    RSS开源框架ROME1.0下载集合

    **RSS开源框架ROME1.0详解** RSS(Really Simple Syndication)是一种用于发布和聚合网络内容的简单格式,常用于博客、新闻站点等,让用户能够方便地获取和订阅信息更新。在开发过程中,为了简化RSS处理,出现了...

    rome,用于rss和atom提要的java库.zip

    Rome是一个广受欢迎的开源Java库,专门设计用于处理RSS(Really Simple Syndication)和Atom提要。这些格式常用于发布新闻、博客和其他在线内容的更新,使得用户可以通过订阅来获取最新的信息。Rome库提供了丰富的...

    jdom+rome-0.9 jar包合集

    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

    标题中的“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包

    而"jdom+rome JAR包"是两个Java库,用于帮助开发者更方便地处理XML文档,并创建和管理RSS馈送。 **JDOM库** JDOM,全称Java Document Object Model,是一个为Java平台设计的DOM(Document Object Model)实现。...

    可以用的jdom+rome.jar

    在实际应用中,开发者可能会遇到的问题包括XML解析错误、RSS Feed格式不兼容、网络连接问题等,这些问题都需要通过良好的异常处理和错误排查技巧来解决。同时,为了提高性能,可能还需要对大量的RSS Feed进行异步...

    rome-1.0 jdom 第一个RSS发布实例

    标题中的“rome-1.0 jdom 第一个RSS发布实例”揭示了本次讨论的主要内容,涉及到两个关键的Java库——Rome和JDOM,以及如何使用它们来创建和发布RSS(Really Simple Syndication) feed。RSS是一种XML格式,用于发布...

    jdom和rome1.0包

    ROME支持多种版本的RSS,包括RSS 0.91、RSS 1.0、RSS 2.0以及Atom 0.3和Atom 1.0。通过使用ROME,开发者可以轻松地从网站抓取和解析RSS feed,或者创建自己的RSS feed并发布到网络。 在描述中提到的“rome开发rss”...

    rss-rome.jar

    NULL 博文链接:https://chenhao-yssy.iteye.com/blog/1074264

    rss订阅包括解决中文出错问题

    在"rss订阅.txt"文件中,可能包含了具体的代码示例或解决方案,建议查看该文件以获取更详细的信息。通过理解RSS订阅的工作原理,正确配置编码参数,并根据需要调整代码,可以有效解决中文字符在RSS订阅中出错的问题...

    java_rss.rar_EXML.jar _RSSLibJ _rome jar_rome.j

    总之,"java_rss.rar"提供的这三个库——EXML.jar、RSSLibJ和Rome,为Java开发人员提供了强大的工具,使他们能够轻松地进行RSS订阅和内容管理。无论你是要创建新的RSS feed,还是从现有源抓取和处理数据,这些库都能...

    rome-1.5.0.jar

    Rome是为RSS聚合而开发的一个框架,让你可以快速的开发基于java的RSS阅读

    Java Rome包

    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 源码

    "rome-1.0.jar" 和 "rome.jar" 是两个这样的库,它们主要用于处理RSS(Really Simple Syndication)和Atom格式的数据,即新闻聚合和内容发布的标准。这些jar文件包含了处理这些格式的类和方法,使得开发者无需从头...

Global site tag (gtag.js) - Google Analytics