⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rss.java

📁 JAVA实现的RSS订阅功能,提供一个RSS DEMO
💻 JAVA
字号:
package cn.pfc.ywt.writer;

import java.io.IOException;
import java.io.StringReader;

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

import org.w3c.dom.Document;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

/**
 * <p>
 * Name: Rss.java
 * 
 * <p>
 * Title: RSS类
 * 
 * <p>
 * Description: 该类用于生成RSS XML的字符串或DOM格式的数据。
 * 
 * <p>
 * Copyright: Copyright (c) 2007
 * 
 * <p>
 * Company: 北大方正软件技术学院实训基地
 * 
 * <p>
 * Modified: 2007年12月22日
 * 
 * 
 * @author 杨文通
 * @version 1.0
 */
public class Rss extends RssElement {
	public static DocumentBuilderFactory dbf = DocumentBuilderFactory
			.newInstance();

	// xml文件的编码格式
	private String encoding = "utf-8";

	// rss版本
	private String version = "2.0";

	// rss命名空间
	private Xmlns xmlns;

	// RSS中的频道元素
	private Channel channel;

	// XSL样式
	private StyleSheet styleSheet;

	public StyleSheet getStyleSheet() {
		return styleSheet;
	}

	public void setStyleSheet(StyleSheet styleSheet) {
		this.styleSheet = styleSheet;
	}

	public Channel getChannel() {
		return channel;
	}

	public String getEncoding() {
		return encoding;
	}

	public String getVersion() {
		return version;
	}

	public Xmlns getXmlns() {
		return xmlns;
	}

	public void setEncoding(String encoding) {
		this.encoding = encoding;
	}

	public void setVersion(String version) {
		this.version = version;
	}

	public void setChannel(Channel channel) {
		this.channel = channel;
	}

	public void setXmlns(Xmlns xmlns) {
		this.xmlns = xmlns;
	}

	public Rss(String encoding, String version, Xmlns xmlns, Channel channel) {
		super();
		this.encoding = encoding;
		this.version = version;
		this.xmlns = xmlns;
		this.channel = channel;
	}

	public Rss(Xmlns xmlns, Channel channel) {
		super();
		this.xmlns = xmlns;
		this.channel = channel;
	}

	public Rss(Channel channel) {
		super();
		this.channel = channel;
	}

	public Rss() {
		super();
	}

	@Override
	public String toString() {
		StringBuilder str = new StringBuilder(32);
		str
				.append("<?xml version=\"1.0\" encoding=\"" + this.encoding
						+ "\"?>");
		if (this.xmlns != null) {
			str.insert(str.indexOf(">") - 1, " " + xmlns);
		}
		if (this.styleSheet != null) {
			str.append(styleSheet);
		}
		str.append("<rss version=\"" + this.version + "\">");
		str.append(channel);
		str.append("</rss>");
		return str.toString();
	}

	// 将该对象格式化为XMLDOM
	public Document toDocument() {
		return toDocument(this.toString());
	}

	// 将RSS的字符串数据格式化为XMLDOM
	public Document toDocument(String xml) {
		try {
			StringReader sr = new StringReader(xml);
			InputSource is = new InputSource(sr);
			DocumentBuilder db = dbf.newDocumentBuilder();
			Document doc = db.parse(is);
			return doc;
		} catch (SAXException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (ParserConfigurationException e) {
			e.printStackTrace();
		}
		return null;
	}

	// 通过地址获取Document
	public Document getDocumentbyUrl(String url) {
		try {
			DocumentBuilder db = dbf.newDocumentBuilder();
			Document doc = db.parse(url);
			return doc;
		} catch (SAXException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (ParserConfigurationException e) {
			e.printStackTrace();
		}
		return null;
	}

	// 将指向地址的rss解析为rss对象
//	public void RssRead(String strURL) {
//		try {
//			URL url = new URL(strURL);
//			String strXml = "";
//			String sCurrentLineStr = "";
//			HttpURLConnection connect = (HttpURLConnection) url
//					.openConnection();
//			connect.connect();
//			BufferedReader reader = new BufferedReader(new InputStreamReader(connect
//					.getInputStream(), encoding));
//			while ((sCurrentLineStr = reader.readLine()) != null) {
//				strXml += sCurrentLineStr;
//			}
//			reader.close();
//			connect.disconnect();
//			Document doc = this.toDocument(strXml);
//			Element eleChannel = (Element) doc.getElementsByTagName("channel")
//					.item(0);
//			channel = new Channel();
//			channel.setItems(new ArrayList<Item>());
//			channel.setCategories(new ArrayList<Category>());
//			NodeList nodeList;
//
//			while (doc.getElementsByTagName("item").getLength() > 0) {
//				Node itemNode = doc.getElementsByTagName("item").item(0);
//				Item item = new Item();
//				nodeList = ((Element) itemNode)
//						.getElementsByTagName("category");
//				for (int i = 0; i < nodeList.getLength(); i++) {
//					Element eleCategory = (Element) nodeList.item(i);
//					Category category = new Category();
//					category.setDomain(eleCategory.getAttribute("domain"));
//					category.setText(strNotNull(eleCategory));
//					item.addCategory(category);
//				}
//				nodeList = ((Element) itemNode).getElementsByTagName("source");
//				if (nodeList.getLength() > 0) {
//					Source source = new Source();
//					source.setUrl(((Element) nodeList.item(0))
//							.getAttribute("url"));
//					source.setText(strNotNull(nodeList.item(0)));
//					item.setSource(source);
//				}
//				nodeList = ((Element) itemNode)
//						.getElementsByTagName("enclosure");
//				if (nodeList.getLength() > 0) {
//					Enclosure enclosure = new Enclosure();
//					enclosure.setUrl(((Element) nodeList.item(0))
//							.getAttribute("url"));
//					enclosure.setType(((Element) nodeList.item(0))
//							.getAttribute("type"));
//					enclosure.setLength(Integer.parseInt(((Element) nodeList
//							.item(0)).getAttribute("length")));
//					item.setEnclosure(enclosure);
//				}
//				nodeList = ((Element) itemNode).getElementsByTagName("title");
//				if (nodeList.getLength() > 0) {
//					item.setTitle(strNotNull(nodeList.item(0)));
//				}
//				nodeList = ((Element) itemNode).getElementsByTagName("link");
//				if (nodeList.getLength() > 0) {
//					item.setLink(strNotNull(nodeList.item(0)));
//				}
//				nodeList = ((Element) itemNode)
//						.getElementsByTagName("description");
//				if (nodeList.getLength() > 0) {
//					item.setDescription(strNotNull(nodeList.item(0)));
//				}
//				nodeList = ((Element) itemNode).getElementsByTagName("author");
//				if (nodeList.getLength() > 0) {
//					item.setAuthor(strNotNull(nodeList.item(0)));
//				}
//				nodeList = ((Element) itemNode)
//						.getElementsByTagName("comments");
//				if (nodeList.getLength() > 0) {
//					item.setComments(strNotNull(nodeList.item(0)));
//				}
//				nodeList = ((Element) itemNode).getElementsByTagName("guid");
//				if (nodeList.getLength() > 0) {
//					item.setGuid(strNotNull(nodeList.item(0)));
//				}
//				nodeList = ((Element) itemNode).getElementsByTagName("pubDate");
//				if (nodeList.getLength() > 0) {
//					item.setPubDate(strNotNull(nodeList.item(0)));
//				}
//				channel.addItems(item);
//				eleChannel.removeChild(itemNode);
//			}
//			nodeList = ((Element) eleChannel).getElementsByTagName("image");
//			if (nodeList.getLength() > 0) {
//				Element eleImage = (Element) nodeList.item(0);
//				Image image = new Image();
//				if (eleImage.getElementsByTagName("title").getLength() > 0) {
//					image.setTitle(strNotNull(eleImage.getElementsByTagName(
//							"title").item(0)));
//				}
//				if (eleImage.getElementsByTagName("url").getLength() > 0) {
//					image.setUrl(strNotNull(eleImage
//							.getElementsByTagName("url").item(0)));
//				}
//				if (eleImage.getElementsByTagName("link").getLength() > 0) {
//					image.setLink(strNotNull(eleImage.getElementsByTagName(
//							"link").item(0)));
//				}
//				if (eleImage.getElementsByTagName("description").getLength() > 0) {
//					image.setDescription(strNotNull(eleImage
//							.getElementsByTagName("description").item(0)));
//				}
//				if (eleImage.getElementsByTagName("width").getLength() > 0) {
//					image.setWidth(Integer.parseInt(strNotNull(eleImage
//							.getElementsByTagName("width").item(0))));
//				}
//				if (eleImage.getElementsByTagName("height").getLength() > 0) {
//					image.setHeight(Integer.parseInt(strNotNull(eleImage
//							.getElementsByTagName("height").item(0))));
//				}
//				channel.setImage(image);
//				eleChannel.removeChild(eleImage);
//			}
//			nodeList = ((Element) eleChannel).getElementsByTagName("category");
//			while (((Element) eleChannel).getElementsByTagName("category")
//					.getLength() > 0) {
//				Element eleCategory = (Element) ((Element) eleChannel)
//						.getElementsByTagName("category").item(0);
//				Category category = new Category();
//				category.setDomain(eleCategory.getAttribute("domain"));
//				category.setText(strNotNull(eleCategory));
//				channel.addCategories(category);
//				eleChannel.removeChild(eleCategory);
//			}
//			nodeList = ((Element) eleChannel).getElementsByTagName("cloud");
//			if (nodeList.getLength() > 0) {
//				Element eleCloud = (Element) nodeList.item(0);
//				Cloud cloud = new Cloud();
//				cloud.setDomain(eleCloud.getAttribute("domain"));
//				cloud.setPort(Integer.parseInt(eleCloud.getAttribute("port")));
//				cloud.setPath(eleCloud.getAttribute("path"));
//				cloud.setRegisterProcedure(eleCloud
//						.getAttribute("registerProcedure"));
//				cloud.setProtocol(eleCloud.getAttribute("protocol"));
//				channel.setCloud(cloud);
//				eleChannel.removeChild(eleCloud);
//			}
//
//			nodeList = ((Element) eleChannel).getElementsByTagName("textInput");
//			if (nodeList.getLength() > 0) {
//				Element eleTextInput = (Element) nodeList.item(0);
//				TextInput textInput = new TextInput();
//				if (eleTextInput.getElementsByTagName("title").getLength() > 0) {
//					textInput.setTitle(strNotNull(eleTextInput
//							.getElementsByTagName("title").item(0)));
//				}
//				if (eleTextInput.getElementsByTagName("name").getLength() > 0) {
//					textInput.setName(strNotNull(eleTextInput
//							.getElementsByTagName("name").item(0)));
//				}
//				if (eleTextInput.getElementsByTagName("link").getLength() > 0) {
//					textInput.setLink(strNotNull(eleTextInput
//							.getElementsByTagName("link").item(0)));
//				}
//				if (eleTextInput.getElementsByTagName("description")
//						.getLength() > 0) {
//					textInput.setDescription(strNotNull(eleTextInput
//							.getElementsByTagName("description").item(0)));
//				}
//				channel.setTextInput(textInput);
//				eleChannel.removeChild(eleTextInput);
//			}
//			nodeList = eleChannel.getElementsByTagName("title");
//			if (nodeList.getLength() > 0) {
//				channel.setTitle(strNotNull(nodeList.item(0)));
//			}
//			nodeList = eleChannel.getElementsByTagName("link");
//			if (nodeList.getLength() > 0) {
//				channel.setLink(strNotNull(nodeList.item(0)));
//			}
//			nodeList = eleChannel.getElementsByTagName("description");
//			if (nodeList.getLength() > 0) {
//				channel.setDescription(strNotNull(nodeList.item(0)));
//			}
//			nodeList = eleChannel.getElementsByTagName("language");
//			if (nodeList.getLength() > 0) {
//				channel.setLanguage(strNotNull(nodeList.item(0)));
//			}
//			nodeList = eleChannel.getElementsByTagName("copyright");
//			if (nodeList.getLength() > 0) {
//				channel.setCopyright(strNotNull(nodeList.item(0)));
//			}
//			nodeList = eleChannel.getElementsByTagName("managingEditor");
//			if (nodeList.getLength() > 0) {
//				channel.setManagingEditor(strNotNull(nodeList.item(0)));
//			}
//			nodeList = eleChannel.getElementsByTagName("webMaster");
//			if (nodeList.getLength() > 0) {
//				channel.setWebMaster(strNotNull(nodeList.item(0)));
//			}
//			nodeList = eleChannel.getElementsByTagName("pubDate");
//			if (nodeList.getLength() > 0) {
//				channel.setPubDate(strNotNull(nodeList.item(0)));
//			}
//			nodeList = eleChannel.getElementsByTagName("lastBuildDate");
//			if (nodeList.getLength() > 0) {
//				channel.setLastBuildDate(strNotNull(nodeList.item(0)));
//			}
//			nodeList = eleChannel.getElementsByTagName("generator");
//			if (nodeList.getLength() > 0) {
//				channel.setGenerator(strNotNull(nodeList.item(0)));
//			}
//			nodeList = eleChannel.getElementsByTagName("docs");
//			if (nodeList.getLength() > 0) {
//				channel.setDocs(strNotNull(nodeList.item(0)));
//			}
//			nodeList = eleChannel.getElementsByTagName("ttl");
//			if (nodeList.getLength() > 0) {
//				channel.setTtl(Integer.parseInt(strNotNull(nodeList.item(0))));
//			}
//			nodeList = eleChannel.getElementsByTagName("rating");
//			if (nodeList.getLength() > 0) {
//				channel.setRating(strNotNull(nodeList.item(0)));
//			}
//		} catch (Exception ex) {
//			ex.printStackTrace();
//		}
//	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -