您的位置:首页 > 其它

使用dom4j对rss的xml文件分析

2005-10-09 15:51 513 查看
Rss-web开始了,今天我的工作就是做对Rss文件的分析,想起前几天刚刚试用了一下的 dom4j,今天就拿他来分析xml了.用的的确很方便!顶一个!
由于我只需要从xml中读取必要的信息,所以写的代码不具有通用性,不过对大多数基本应用,这个类应该够用了!先贴代码和运行结果:

package org.ibmclub.hust.Rss;

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

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Node;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.ibmclub.hust.Rss.bean.Item;

public class RssFile {
private Document doc;

private String channelName;

private String channelLink;

private String channelDes;

private ArrayList<Item> items = new ArrayList<Item>();

public RssFile(File f) {
parseFile(f);
}

private void parseFile(File f) {
try {
SAXReader reader = new SAXReader();
doc = reader.read(f);

List l = doc.selectNodes("rss/channel");

if (l.size() == 0) {
throw new Exception("not a good rss-xml file");
}
Node channel = (Node) l.get(0);
channelName = ((Element) channel.selectNodes("title").get(0))
.getText();
channelLink = ((Element) channel.selectNodes("link").get(0))
.getText();
channelDes = ((Element) channel.selectNodes("description").get(0))
.getText();

//封装item信息
List itemList = channel.selectNodes("item");
for(Object item : itemList){
Item i = new Item((Node)item);
items.add(i);
}

//查看输出
System.out.println("channelName:" + channelName);
System.out.println("channelLink:" + channelLink);
System.out.println("channeDes:" + channelDes);
for(Item i : items){
System.out.println(" title:"+i.getTitle());
// System.out.println(" link:"+i.getLink());
// System.out.println(" pubtime:"+i.getPubTime());
// System.out.println(" des:"+i.getDes());
}
} catch (Exception e) {
System.out.println("message:"+e.getMessage());
}
}

public String getChannelName() {
return channelName;
}

public String getChannelLink() {
return channelLink;
}

public String getDescription() {
return channelDes;
}

public ArrayList<Item> getItems() {
return items;
}

public static void main(String[] args) {
long start = System.currentTimeMillis();
RssFile rssfile = new RssFile(new File("c://Rss.xml"));
System.out.println(System.currentTimeMillis() - start);
}
}

package org.ibmclub.hust.Rss.bean;

import java.sql.Timestamp;
import org.dom4j.Element;
import org.dom4j.Node;

public class Item {
private String title;

private String link;

private String des;

private String pubTime;

public Item() {
}

public Item(Node itemNode) {
title = ((Element) itemNode.selectNodes("title").get(0)).getText();
link = ((Element) itemNode.selectNodes("link").get(0)).getText();
des = ((Element) itemNode.selectNodes("description").get(0)).getText();
pubTime = ((Element) itemNode.selectNodes("pubDate").get(0)).getText();
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

public String getLink() {
return link;
}

public void setLink(String link) {
this.link = link;
}

public String getPubTime() {
return pubTime;
}

public void setPubTime(String pubTime) {
this.pubTime = pubTime;
}

public String getDes(){
return des ;
}
public void setDes(String des){
this.des = des ;
}
}

运行结果:
channelName:CQ的专栏

channelLink:http://blog.csdn.net/cq8587/

channeDes:

title:今天上课了

title:拓扑排序

title:俄罗斯农夫算法

title:影评:雨天的水彩画 《爱有天意》观感(转)

title:java处理压缩文件

title:第一篇文章

532

用的时间还真不少 532ms,不过写起代码来还真是简单方便,鱼和熊掌不可兼得!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: