📄 rssdaojdomimpl.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 + -