以下是我用的代码
import java.net.URL;
import java.util.List; import RSSInfo.vo.* ;
import RSSInfo.dao.* ;
import RSSInfo.dao.impl.* ;
import java.sql.Date;import com.sun.syndication.feed.synd.SyndCategory;
import com.sun.syndication.feed.synd.SyndContent;
import com.sun.syndication.feed.synd.SyndEnclosure;
import com.sun.syndication.feed.synd.SyndEntry;
import com.sun.syndication.feed.synd.SyndFeed;
import com.sun.syndication.io.SyndFeedInput;
import com.sun.syndication.io.XmlReader;
public class TestParse {
public static void main(String[] args) {
TestParse test = new TestParse();
test.parseRss();
}
public void parseRss() {
String rss = "http://rss.sina.com.cn/ent/hot_roll.xml";
RSSInfo rssinfo=null;
rssinfo=new RSSInfo();
try {
URL url = new URL(rss);
// 读取Rss源
XmlReader reader = new XmlReader(url);
System.out.println("Rss源的编码格式为:" + reader.getEncoding());
SyndFeedInput input = new SyndFeedInput();
// 得到SyndFeed对象,即得到Rss源里的所有信息
SyndFeed feed = input.build(reader);
//System.out.println(feed);
// 得到Rss新闻中子项列表
List entries = feed.getEntries();
// 循环得到每个子项信息
for (int i = 0; i < entries.size(); i++) {
SyndEntry entry = (SyndEntry) entries.get(i);
// 标题、连接地址、标题简介、时间是一个Rss源项最基本的组成部分
System.out.println("标题:" + entry.getTitle());
System.out.println("连接地址:" + entry.getLink());
SyndContent description = entry.getDescription();
System.out.println("标题简介:" + description.getValue());
System.out.println("发布时间:" + entry.getPublishedDate());
rssinfo.setValue(description.getValue());
rssinfo.setPublishDate(entry.getPublishedDate().toString());
// 以下是Rss源可先的几个部分
System.out.println("标题的作者:" + entry.getAuthor());
// 此标题所属的范畴
List categoryList = entry.getCategories();
if (categoryList != null) {
for (int m = 0; m < categoryList.size(); m++) {
SyndCategory category = (SyndCategory) categoryList.get(m);
System.out.println("此标题所属的范畴:" + category.getName());
rssinfo.setCategory(category.getName());
}
}
// 得到流媒体播放文件的信息列表
List enclosureList = entry.getEnclosures();
if (enclosureList != null) {
for (int n = 0; n < enclosureList.size(); n++) {
SyndEnclosure enclosure = (SyndEnclosure) enclosureList.get(n);
System.out.println("流媒体播放文件:" + entry.getEnclosures());
}
}
System.out.println();
rssinfo.setTitle(entry.getTitle());
rssinfo.setLink(entry.getLink());
rssinfo.setAuthor(entry.getAuthor());
dao.insert(rssinfo);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
我用了DAO模式进行数据库操作
连接地址,发布时间和作者这几项我可以获取并存入数据库,其他三项虽然能获取但是在数据库中得到的是空值
import java.net.URL;
import java.util.List; import RSSInfo.vo.* ;
import RSSInfo.dao.* ;
import RSSInfo.dao.impl.* ;
import java.sql.Date;import com.sun.syndication.feed.synd.SyndCategory;
import com.sun.syndication.feed.synd.SyndContent;
import com.sun.syndication.feed.synd.SyndEnclosure;
import com.sun.syndication.feed.synd.SyndEntry;
import com.sun.syndication.feed.synd.SyndFeed;
import com.sun.syndication.io.SyndFeedInput;
import com.sun.syndication.io.XmlReader;
public class TestParse {
public static void main(String[] args) {
TestParse test = new TestParse();
test.parseRss();
}
public void parseRss() {
String rss = "http://rss.sina.com.cn/ent/hot_roll.xml";
RSSInfo rssinfo=null;
rssinfo=new RSSInfo();
try {
URL url = new URL(rss);
// 读取Rss源
XmlReader reader = new XmlReader(url);
System.out.println("Rss源的编码格式为:" + reader.getEncoding());
SyndFeedInput input = new SyndFeedInput();
// 得到SyndFeed对象,即得到Rss源里的所有信息
SyndFeed feed = input.build(reader);
//System.out.println(feed);
// 得到Rss新闻中子项列表
List entries = feed.getEntries();
// 循环得到每个子项信息
for (int i = 0; i < entries.size(); i++) {
SyndEntry entry = (SyndEntry) entries.get(i);
// 标题、连接地址、标题简介、时间是一个Rss源项最基本的组成部分
System.out.println("标题:" + entry.getTitle());
System.out.println("连接地址:" + entry.getLink());
SyndContent description = entry.getDescription();
System.out.println("标题简介:" + description.getValue());
System.out.println("发布时间:" + entry.getPublishedDate());
rssinfo.setValue(description.getValue());
rssinfo.setPublishDate(entry.getPublishedDate().toString());
// 以下是Rss源可先的几个部分
System.out.println("标题的作者:" + entry.getAuthor());
// 此标题所属的范畴
List categoryList = entry.getCategories();
if (categoryList != null) {
for (int m = 0; m < categoryList.size(); m++) {
SyndCategory category = (SyndCategory) categoryList.get(m);
System.out.println("此标题所属的范畴:" + category.getName());
rssinfo.setCategory(category.getName());
}
}
// 得到流媒体播放文件的信息列表
List enclosureList = entry.getEnclosures();
if (enclosureList != null) {
for (int n = 0; n < enclosureList.size(); n++) {
SyndEnclosure enclosure = (SyndEnclosure) enclosureList.get(n);
System.out.println("流媒体播放文件:" + entry.getEnclosures());
}
}
System.out.println();
rssinfo.setTitle(entry.getTitle());
rssinfo.setLink(entry.getLink());
rssinfo.setAuthor(entry.getAuthor());
dao.insert(rssinfo);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
我用了DAO模式进行数据库操作
连接地址,发布时间和作者这几项我可以获取并存入数据库,其他三项虽然能获取但是在数据库中得到的是空值
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货