注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

韬光养晦

路漫漫其修远兮,吾将上下而求索

 
 
 

日志

 
 

RSS简介  

2008-05-19 20:34:28|  分类: JAVA |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

       RSS(Really Sinple Syndication)是一种利用XML文件来发布网站内容的技术,它是一种对网站内容进行快速阅读的方式。

       Netscape公司设计了最初的0.90版本,但是该版本RSS规范过于复杂。后经UserLand公司接手发展了0.91版本。随后许多专业人士在0.90版本的开发原则下,利用RDF(Resource Description Framework)重新定义了RSS,发布了RSS1.0,并将RSS定义为"RDF Site Summary"。但是由于没有同UserLand公司进行有效的沟通,没有得到UserLand的有效性承认。UserLand公司继续按照自己的设想开发了RSS2.0。于是RSS分化为RSS0.9x/2.0和RSS1.0两个阵营。

        以下的地址给出了RSS Specification :

 

       利用RSS实际上是利用一个URL给出的一个XML,只需要按照RSS Specification对该XML文件进行解析,就可以开发出自己的RSS阅读器。也可以利用一些已有的RSS阅读软件或者在线的RSS阅读器来获得指定RSS所描述的网站内容。

 

       下面给出了一个JAVA解析一个RSS 2.0 XML的代码片段:

package com.lanvis.struts;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
/*
 * 利用标准的SAX来访问xml中的内容
 */
public class RssPaser {
 public static List parseFeed(String address) {
  List result=new ArrayList();
  DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
  DocumentBuilder db;
  Document doc;
  
  try {
   //DocumentBuilderFactory对象的newDocumentBuilder方法
   //得到DocumentBuilder对象
   //此DocumentBuilder对象的作用是根据xml文件url地址生成
   //Document对象
   db=dbf.newDocumentBuilder();
   doc=db.parse(address);
   
   //feed的xml文件组成单位是item,从doc中取出所有的item
   NodeList nl=doc.getElementsByTagName("item");
   //遍历这些item,取得其中的title,author,description和url等信息
   for(int i=0;i<nl.getLength();i++){
    Node node=nl.item(i);
    NodeList nl2=node.getChildNodes();
    
    Node nodeTitle=nl2.item(0);
    Node nodeAuthor=nl2.item(2);
    Node nodeUrl=nl2.item(1);
    Node nodeDescription=nl2.item(11);
    
    String title = nodeTitle.getFirstChild().getNodeValue();
    String author = nodeAuthor.getFirstChild().getNodeValue();
    String url = nodeUrl.getFirstChild().getNodeValue();
    String description = nodeDescription.getFirstChild().getNodeValue();
    
    //利用已有数据构造了一个Item实例。
    Item item=new Item(title,description,author,url);
    result.add(item);
   }   
  }catch (ParserConfigurationException e){
   e.printStackTrace();   
  }catch(SAXException e) {
   e.printStackTrace();
  }catch(IOException e) {
   e.printStackTrace();
  }catch(Exception e) {
   e.printStackTrace();
  }finally{
   return result;
  }  
 }
}
   

 

  评论这张
 
阅读(192)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018