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

📄 rssdaojdomimpl.java

📁 利用ajax技术及javascript语言编写的rss阅读器
💻 JAVA
字号:
package com.worksoft.rss.dao.jdom;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
import org.jdom.xpath.XPath;

import java.util.Date;
import com.worksoft.rss.bean.Feed;
import com.worksoft.rss.bean.Item;
import com.worksoft.rss.dao.IRssDAO;

public class RssDAOjdomImpl implements IRssDAO {
	public List<Item> getItem(String path) {
		// TODO Auto-generated method stub
		List<Item> foundItems = new ArrayList<Item>();
		Element item = null;
		Item xml = null;
		Document doc = getItemsdoc(path);
		Element root = doc.getRootElement();
		Element channel = root.getChild("channel");
		List items = channel.getChildren("item");

		Item channels = new Item();
		channels.setChannelLink(channel.getChild("link").getText());
		channels.setChannelTitle(channel.getChild("title").getText());
		foundItems.add(channels);
		for (int i = 0; i < items.size(); i++) {
			xml = new Item();
			item = (Element) items.get(i);
			xml.setTitle(item.getChild("title").getText());
			xml.setDescription(item.getChild("description").getText());
			xml.setLink(item.getChild("link").getText());
			xml.setPubDate(item.getChild("pubDate").getText());
			foundItems.add(xml);
		}
		System.out.println(foundItems.size());
		return foundItems;
	}

	public static void main(String args[]) {
		RssDAOjdomImpl rss = new RssDAOjdomImpl();
		// List<Item> rss1 = rss
		// .getItem("http://rss.sina.com.cn/news/allnews/tech.xml");
		// Item item = rss1.get(3);
		// System.out.print(item.getLink());
		rss.removeFeed("D:/Desktop/workplace/RSSReader/webapp/hardware.xml");
	}

	public List<Feed> getFeeds() {
		List<Feed> foundItems = new ArrayList<Feed>();
		FileInputStream fi = null;
		try {
			fi = new FileInputStream(
					"D:/Desktop/workplace/RSSReader/webapp/feed.xml");
			SAXBuilder sb = new SAXBuilder();
			Document doc = sb.build(fi);
			Element feed = doc.getRootElement();
			List channels = feed.getChildren("channel");
			Element channel = null;
			Feed item = null;
			for (int i = 0; i < channels.size(); i++) {
				item = new Feed();
				channel = (Element) channels.get(i);
				item.setFeedId(channel.getChild("feedId").getText());
				item.setFeedName(channel.getChild("feedName").getText());
				item.setUpdateDate(channel.getChild("updateDate").getText());
				foundItems.add(item);
			}
		} catch (Exception e) {
			System.err.println(e + "error");
		} finally {
			try {
				fi.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		System.out.println(foundItems.size());
		return foundItems;
	}

	public static String AddFeed(String feedName, String feedId) throws Exception {
		FileInputStream fi = null;
		FileOutputStream fo = null;
		try {
			fi = new FileInputStream(
					"D:/Desktop/workplace/RSSReader/webapp/feed.xml");
			SAXBuilder sb = new SAXBuilder();
			Document doc = sb.build(fi);
			Element feed = doc.getRootElement(); // 得到根元素
			List channels = feed.getChildren(); // 得到根元素所有子元素的集合
			// Text newtext;
			Element channel = new Element("channel");
			Element feedid = new Element("feedId");
			feedid.setText(feedId);
			channel.addContent(feedid);
			Element feedname = new Element("feedName");
			feedname.setText(feedName);
			channel.addContent(feedname);
			Element updateDate = new Element("updateDate");
			Date myDate = new Date();
			updateDate.setText(myDate.toString());
			channel.addContent(updateDate);
			channels.add(channel);
			Format format = Format.getPrettyFormat();
			format.setIndent("  ");
			format.setEncoding("utf-8");
			XMLOutputter outp = new XMLOutputter(format);
			fo = new FileOutputStream(
					"D:/Desktop/workplace/RSSReader/webapp/feed.xml");
			outp.output(doc, fo);
			return "1";
		} catch (Exception e) {
			System.err.println(e + "error");
			return "0";
		} finally {
			try {
				fi.close();
				fo.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}

	public Document getItemsdoc(String url) {
		String url1 = url.substring(0, 7);
		Document doc = null;
		if (url1.equals("http://")) {
			InputStream fi = null;
			try {
				URL urlFile = new URL(url);
				URLConnection urlconn = urlFile.openConnection();
				fi = urlconn.getInputStream();// 打开输入流,将数据从外部读到内存
				System.out.println(fi.toString());
				SAXBuilder sb = new SAXBuilder();
				doc = sb.build(fi);
			} catch (Exception e) {
				System.err.println(e + "error");
			} finally {
				try {
					fi.close();
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		} else {
			FileInputStream fi = null;
			try {
				fi = new FileInputStream(url);
				SAXBuilder sb = new SAXBuilder();
				doc = sb.build(fi);
			} catch (Exception e) {
				System.err.println(e + "error");
			} finally {
				try {
					fi.close();
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
		return doc;
	}

	public void removeFeed(String feedId) {
		FileInputStream fi = null;
		FileOutputStream fo = null;
		try {
			fi = new FileInputStream(
					"D:/Desktop/workplace/RSSReader/webapp/feed.xml");
			SAXBuilder sb = new SAXBuilder();
			Document doc = sb.build(fi);
			Element feed = doc.getRootElement(); // 得到根元素
			List channels = feed.getChildren(); // 得到根元素所有子元素的集合
			// XPath xpath = XPath.newInstance("//channel[feedId="+feedId+"]");
			// Element anode = (Element) xpath.selectSingleNode(doc);
			// anode.getParentElement().removeContent(anode);
			for (int i = 0; i < channels.size(); i++) {
				Element dd = (Element) channels.get(i);
				if (dd.getChild("feedId").getText().toString().equals(feedId)) {
					dd.getParentElement().removeContent(dd);
				}
			}
			Format format = Format.getPrettyFormat();
			format.setIndent("  ");
			format.setEncoding("utf-8");
			XMLOutputter outp = new XMLOutputter(format);
			fo = new FileOutputStream(
					"D:/Desktop/workplace/RSSReader/webapp/feed.xml");
			outp.output(doc, fo);
		} catch (Exception e) {
			System.err.println(e + "error");
		} finally {
			try {
				fi.close();
				fo.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
}

⌨️ 快捷键说明

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