package cn.com.scitc.swl.rssnews.tools; import java.io.StringReader; import java.util.ArrayList; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserFactory; import cn.com.scitc.swl.rssnews.model.RssNews; /** * 该类主要完成了对XML文件的解析 * * @author ASHENG * */ public class XMLTools { public XMLTools() { // TODO Auto-generated constructor stub } public static ArrayList<RssNews> parseXML(String xmlString) { ArrayList<RssNews> list = null; RssNews rssNews = null; try { XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); XmlPullParser parser = factory.newPullParser(); parser.setInput(new StringReader(xmlString)); int evenType = parser.getEventType(); while (evenType != XmlPullParser.END_DOCUMENT) { switch (evenType) { case XmlPullParser.START_DOCUMENT: list = new ArrayList<RssNews>(); break; case XmlPullParser.START_TAG: if ("item".equals(parser.getName())) { rssNews = new RssNews(); } if (rssNews != null) { if ("title".equals(parser.getName())) { rssNews.title = parser.nextText(); } else if ("link".equals(parser.getName())) { rssNews.link = parser.nextText(); } else if ("pubDate".equals(parser.getName())) { rssNews.pubDate = parser.nextText(); } else if ("source".equals(parser.getName())) { rssNews.source = parser.nextText(); } else if ("description".equals(parser.getName())) { rssNews.description = parser.nextText() + ""; if (rssNews.description.contains("<img")) { rssNews.imgUrl = StringUtils .getImg(rssNews.description); rssNews.imgName = StringUtils .getImgName(rssNews.imgUrl); } } else if ("comments".equals(parser.getName())) { rssNews.comments = parser.nextText(); } else if ("content:encoded".equals(parser.getName())) { rssNews.content = parser.nextText() + ""; if (rssNews.content.contains("<img")) { rssNews.imgUrl = StringUtils .getImg(rssNews.content); rssNews.imgName = StringUtils .getImgName(rssNews.imgUrl); } } } break; case XmlPullParser.END_TAG: if ("item".equals(parser.getName())) { // rssNews.imgUrl = StringUtils // .getImg(rssNews.content.toString()); list.add(rssNews); rssNews = null; } break; } evenType = parser.next(); } return list; } catch (Exception e) { // TODO: handle exception e.printStackTrace(); return null; } } }