try{
org.dom4j.io.saxreader saxreader = new org.dom4j.io.saxreader();
org.dom4j.document document = saxreader.read(rssurl);
org.dom4j.element channel = (org.dom4j.element) document.getrootelement().element("channel");
int index =0;
for (java.util.iterator i = channel.elementiterator("item"); i.hasnext();){
if(index+1>rsstable.rows.length){
break;
}
org.dom4j.element element = (org.dom4j.element) i.next();
string title = element.elementtext("title");
string link = element.elementtext("link");
string pubdate = element.elementtext("pubdate");
string source = element.elementtext("source");
ci.adp.datarow rssrow = rsstable.getdatarowbyindex(index);
rssrow.setvalue("title", title);
rssrow.setvalue("link", link);
rssrow.setvalue("pubdate", pubdate);
rssrow.setvalue("source", source);
/*
system.out.println("title标题: " + title);
system.out.println("link链接: " + link);
system.out.println("pubdate发布时间: " +pubdate);
system.out.println("source来源: " + source);
*/
index++;
}
}catch (exception e) {
e.printstacktrace();
}
折腾了一上午,终于换一种方式搞定了。
上面这种dom4j方式,在我本机环境(windows+weblogic10+jdk1.6)下没问题,
放到服务器上(linux5.4 x64+weblogic10+jdk1.6)上,始终都报这个错:
[oracle@ablw010215 bin]$ warning: caught exception attempting to use sax to load a sax xmlreader
warning: exception was: java.lang.classcastexception: com.sun.org.apache.xerces.internal.parsers.xincludeawareparserconfiguration
warning: i will print the stack trace then carry on using the default sax parser
java.lang.classcastexception: com.sun.org.apache.xerces.internal.parsers.xincludeawareparserconfiguration
at org.xml.sax.helpers.xmlreaderfactory.loadclass(xmlreaderfactory.java:199)
at org.xml.sax.helpers.xmlreaderfactory.createxmlreader(xmlreaderfactory.java:150)
at org.dom4j.io.saxhelper.createxmlreader(saxhelper.java:83)
at org.dom4j.io.saxreader.createxmlreader(saxreader.java:894)
at org.dom4j.io.saxreader.getxmlreader(saxreader.java:715)
at org.dom4j.io.saxreader.read(saxreader.java:435)
at org.dom4j.io.saxreader.read(saxreader.java:321)
at jsp_servlet._ajax._comm._bbs.__iframearticlecontent._jspservice(__iframearticlecontent.java:100)
at weblogic.servlet.jsp.jspbase.service(jspbase.java:35)
at weblogic.servlet.internal.stubsecurityhelper$servletserviceaction.run(stubsecurityhelper.java:227)
at weblogic.servlet.internal.stubsecurityhelper.invokeservlet(stubsecurityhelper.java:125)
at weblogic.servlet.internal.servletstubimpl.execute(servletstubimpl.java:300)
at weblogic.servlet.internal.tailfilter.dofilter(tailfilter.java:27)
at weblogic.servlet.internal.filterchainimpl.dofilter(filterchainimpl.java:57)
at ci.filter.setcharacterencodingfilter.dofilter(setcharacterencodingfilter.java:107)
at weblogic.servlet.internal.filterchainimpl.dofilter(filterchainimpl.java:57)
at weblogic.servlet.internal.webappservletcontext$servletinvocationaction.wraprun(webappservletcontext.java:3715)
at weblogic.servlet.internal.webappservletcontext$servletinvocationaction.run(webappservletcontext.java:3681)
at weblogic.security.acl.internal.authenticatedsubject.doas(authenticatedsubject.java:321)
at weblogic.security.service.securitymanager.runas(securitymanager.java:120)
at weblogic.servlet.internal.webappservletcontext.securedexecute(webappservletcontext.java:2277)
at weblogic.servlet.internal.webappservletcontext.execute(webappservletcontext.java:2183)
at weblogic.servlet.internal.servletrequestimpl.run(servletrequestimpl.java:1454)
at weblogic.work.executethread.execute(executethread.java:209)
at weblogic.work.executethread.run(executethread.java:178)
org.dom4j.documentexception: sax2 driver class weblogic.xml.jaxp.registryxmlreader does not implement xmlreader nested exception: sax2 driver class weblogic.xml.jaxp.registryxmlreader does not implement xmlreader
at org.dom4j.io.saxreader.read(saxreader.java:484)
at org.dom4j.io.saxreader.read(saxreader.java:321)
at jsp_servlet._ajax._comm._bbs.__iframearticlecontent._jspservice(__iframearticlecontent.java:99)
at weblogic.servlet.jsp.jspbase.service(jspbase.java:35)
at weblogic.servlet.internal.stubsecurityhelper$servletserviceaction.run(stubsecurityhelper.java:227)
at weblogic.servlet.internal.stubsecurityhelper.invokeservlet(stubsecurityhelper.java:125)
at weblogic.servlet.internal.servletstubimpl.execute(servletstubimpl.java:300)
at weblogic.servlet.internal.tailfilter.dofilter(tailfilter.java:27)
at weblogic.servlet.internal.filterchainimpl.dofilter(filterchainimpl.java:57)
at ci.filter.setcharacterencodingfilter.dofilter(setcharacterencodingfilter.java:107)
at weblogic.servlet.internal.filterchainimpl.dofilter(filterchainimpl.java:57)
at weblogic.servlet.internal.webappservletcontext$servletinvocationaction.wraprun(webappservletcontext.java:3715)
at weblogic.servlet.internal.webappservletcontext$servletinvocationaction.run(webappservletcontext.java:3681)
at weblogic.security.acl.internal.authenticatedsubject.doas(authenticatedsubject.java:321)
at weblogic.security.service.securitymanager.runas(securitymanager.java:120)
at weblogic.servlet.internal.webappservletcontext.securedexecute(webappservletcontext.java:2277)
at weblogic.servlet.internal.webappservletcontext.execute(webappservletcontext.java:2183)
at weblogic.servlet.internal.servletrequestimpl.run(servletrequestimpl.java:1454)
at weblogic.work.executethread.execute(executethread.java:209)
at weblogic.work.executethread.run(executethread.java:178)
nested exception:
java.lang.classcastexception: com.sun.org.apache.xerces.internal.parsers.xincludeawareparserconfiguration
at org.dom4j.io.saxhelper.createxmlreader(saxhelper.java:98)
at org.dom4j.io.saxreader.createxmlreader(saxreader.java:894)
at org.dom4j.io.saxreader.getxmlreader(saxreader.java:715)
at org.dom4j.io.saxreader.read(saxreader.java:435)
at org.dom4j.io.saxreader.read(saxreader.java:321)
at jsp_servlet._ajax._comm._bbs.__iframearticlecontent._jspservice(__iframearticlecontent.java:100)
at weblogic.servlet.jsp.jspbase.service(jspbase.java:35)
at weblogic.servlet.internal.stubsecurityhelper$servletserviceaction.run(stubsecurityhelper.java:227)
at weblogic.servlet.internal.stubsecurityhelper.invokeservlet(stubsecurityhelper.java:125)
at weblogic.servlet.internal.servletstubimpl.execute(servletstubimpl.java:300)
at weblogic.servlet.internal.tailfilter.dofilter(tailfilter.java:27)
at weblogic.servlet.internal.filterchainimpl.dofilter(filterchainimpl.java:57)
at ci.filter.setcharacterencodingfilter.dofilter(setcharacterencodingfilter.java:107)
at weblogic.servlet.internal.filterchainimpl.dofilter(filterchainimpl.java:57)
at weblogic.servlet.internal.webappservletcontext$servletinvocationaction.wraprun(webappservletcontext.java:3715)
at weblogic.servlet.internal.webappservletcontext$servletinvocationaction.run(webappservletcontext.java:3681)
at weblogic.security.acl.internal.authenticatedsubject.doas(authenticatedsubject.java:321)
at weblogic.security.service.securitymanager.runas(securitymanager.java:120)
at weblogic.servlet.internal.webappservletcontext.securedexecute(webappservletcontext.java:2277)
at weblogic.servlet.internal.webappservletcontext.execute(webappservletcontext.java:2183)
at weblogic.servlet.internal.servletrequestimpl.run(servletrequestimpl.java:1454)
at weblogic.work.executethread.execute(executethread.java:209)
at weblogic.work.executethread.run(executethread.java:178)
nested exception: java.lang.classcastexception: com.sun.org.apache.xerces.internal.parsers.xincludeawareparserconfiguration
at org.dom4j.io.saxhelper.createxmlreader(saxhelper.java:98)
at org.dom4j.io.saxreader.createxmlreader(saxreader.java:894)
at org.dom4j.io.saxreader.getxmlreader(saxreader.java:715)
at org.dom4j.io.saxreader.read(saxreader.java:435)
at org.dom4j.io.saxreader.read(saxreader.java:321)
at jsp_servlet._ajax._comm._bbs.__iframearticlecontent._jspservice(__iframearticlecontent.java:100)
at weblogic.servlet.jsp.jspbase.service(jspbase.java:35)
at weblogic.servlet.internal.stubsecurityhelper$servletserviceaction.run(stubsecurityhelper.java:227)
at weblogic.servlet.internal.stubsecurityhelper.invokeservlet(stubsecurityhelper.java:125)
at weblogic.servlet.internal.servletstubimpl.execute(servletstubimpl.java:300)
at weblogic.servlet.internal.tailfilter.dofilter(tailfilter.java:27)
at weblogic.servlet.internal.filterchainimpl.dofilter(filterchainimpl.java:57)
at ci.filter.setcharacterencodingfilter.dofilter(setcharacterencodingfilter.java:107)
at weblogic.servlet.internal.filterchainimpl.dofilter(filterchainimpl.java:57)
at weblogic.servlet.internal.webappservletcontext$servletinvocationaction.wraprun(webappservletcontext.java:3715)
at weblogic.servlet.internal.webappservletcontext$servletinvocationaction.run(webappservletcontext.java:3681)
at weblogic.security.acl.internal.authenticatedsubject.doas(authenticatedsubject.java:321)
at weblogic.security.service.securitymanager.runas(securitymanager.java:120)
at weblogic.servlet.internal.webappservletcontext.securedexecute(webappservletcontext.java:2277)
at weblogic.servlet.internal.webappservletcontext.execute(webappservletcontext.java:2183)
at weblogic.servlet.internal.servletrequestimpl.run(servletrequestimpl.java:1454)
at weblogic.work.executethread.execute(executethread.java:209)
at weblogic.work.executethread.run(executethread.java:178)
<2012-11-8 上午10时56分08秒 cst> <warning> <socket> <bea-000449> <closing socket as no data read from it on 10.16.99.18:53,874 during the configured idle timeout of 5 secs>
<2012-11-8 上午10时56分08秒 cst> <warning> <socket> <bea-000449> <closing socket as no data read from it on 10.16.99.18:53,875 during the configured idle timeout of 5 secs>
在weblogic.xml加配置文件、加lib包等等都不起作用,换成这个就好了(依赖lib在我上传的资源中,完全免费):
try { url url = new url(rss); // 读取rss源 xmlreader reader = new xmlreader(url); system.out.println("rss源的编码格式为:" + reader.getencoding()); syndfeedinput input = new syndfeedinput(); syndfeed feed = input.build(reader); // 得到syndfeed对象,即得到rss源里的所有信息 list entries
= feed.getentries(); // 得到rss新闻中子项列表 int index =0; for (int i = 0; i < entries.size(); i++) { // 循环得到每个子项信息 if(index+1>rsstable.rows.length){ break; } syndentry entry = (syndentry) entries.get(i); /* system.out.println("标题:" + entry.gettitle()); system.out.println("连接地址:"
+ entry.getlink()); syndcontent description = entry.getdescription(); system.out.println("标题简介:" + description.getvalue()); system.out.println("发布时间:" + entry.getpublisheddate()); // 以下是rss源可先的几个部分 system.out.println("标题的作者:" + entry.getauthor()); */ ci.adp.datarow
rssrow = rsstable.getdatarowbyindex(index); rssrow.setvalue("title", entry.gettitle()); rssrow.setvalue("link", entry.getlink()); rssrow.setvalue("pubdate", entry.getpublisheddate()); rssrow.setvalue("source", 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()); } } */ index++; /* // 得到流媒体播放文件的信息列表 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()); } } */ } } catch (exception
e) { e.printstacktrace(); }
org.dom4j.io.saxreader saxreader = new org.dom4j.io.saxreader();org.dom4j.document document = saxreader.read(rssurl);org.dom4j.element channel = (org.dom4j.element) document.getrootelement().element("channel"); int index =0; for (java.util.iterator i = channel.elementiterator("item");
i.hasnext();){ if(index+1>rsstable.rows.length){ break; } org.dom4j.element element = (org.dom4j.element) i.next(); string title = element.elementtext("title"); string link = element.elementtext("link"); string pubdate = element.elementtext("pubdate"); string
source = element.elementtext("source"); ci.adp.datarow rssrow = rsstable.getdatarowbyindex(index); rssrow.setvalue("title", title); rssrow.setvalue("link", link); rssrow.setvalue("pubdate", pubdate); rssrow.setvalue("source", source); /* system.out.println("title标题:
" + title); system.out.println("link链接: " + link); system.out.println("pubdate发布时间: " +pubdate); system.out.println("source来源: " + source); */ index++; }
以上就是解析rss问题的总结的详细内容。