package org.carelife.creader.util;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.List;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.carelife.creader.dao.RssData;
import org.carelife.creader.dao.SearchData;
import org.carelife.creader.dao.UrlHelper;
import org.carelife.creader.dao.VersionData;
import org.carelife.creader.xmlparser.RankParser;
import org.carelife.creader.xmlparser.RssSXParser;
import org.carelife.creader.xmlparser.SearchParser;
import org.carelife.creader.xmlparser.VersionParser;
import org.xml.sax.SAXException;
public class XmlUtil {
public static HashMap<String, Object> getXML(String cate, int st, int len)
throws IOException {
HashMap<String, Object> result = null;
String Url = UrlHelper.rankurl + cate + "&start=" + st + "&length="
+ len;
try {
URL urlStr = new URL(Url);
HttpURLConnection httpUrlConnection = (HttpURLConnection) urlStr
.openConnection();
InputStream input = httpUrlConnection.getInputStream();
if (input == null) {
return null;
}
// ��ʼ�����ļ�
result = RankParser.getRankResultByXml(input);
if (null != httpUrlConnection)
httpUrlConnection.disconnect();
} catch (MalformedURLException err) {
err.printStackTrace();
}
return result;
}
public static HashMap<String, Object> getXML(String url, String query,
String additon, int type) throws IOException {
HashMap<String, Object> result = null;
String Url = url + query + additon;
try {
URL urlStr = new URL(Url);
HttpURLConnection httpUrlConnection = (HttpURLConnection) urlStr
.openConnection();
InputStream input = httpUrlConnection.getInputStream();
if (input == null) {
return null;
}
// ��ʼ�����ļ�
switch (type) {
case 0:
result = SearchParser.getSearchResultByXml(input);
break;
case 1:
result = RankParser.getRankResultByXml(input);
break;
default:
break;
}
if (null != httpUrlConnection)
httpUrlConnection.disconnect();
} catch (MalformedURLException err) {
err.printStackTrace();
}
return result;
}
public static List<RssData> getNewsXML(String url) throws IOException {
List<RssData> result = null;
URL urlStr = null;
try {
urlStr = new URL(url);
} catch (MalformedURLException e) {
e.printStackTrace();
}
HttpURLConnection httpUrlConnection = null;
httpUrlConnection = ((HttpURLConnection) urlStr.openConnection());
InputStream input = null;
input = httpUrlConnection.getInputStream();
if (input == null) {
return null;
}
RssSXParser handler = new RssSXParser();
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = null;
try {
saxParser = factory.newSAXParser();
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
}
// ��ʼ�����ļ�
try {
saxParser.parse(input, handler);
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
result = handler.getRss();
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
return result;
// List<RssData> result = null;
// String Url = url;
// try {
// URL urlStr = new URL(Url);
// HttpURLConnection httpUrlConnection = (HttpURLConnection) urlStr
// .openConnection();
// InputStream input = httpUrlConnection.getInputStream();
// // ��ʼ�����ļ�
// result = ParserRss.getRssResultByXml(input);
// if (null != httpUrlConnection)
// httpUrlConnection.disconnect();
// } catch (Exception err) {
// err.printStackTrace();
// }
// return result;
}
public static List<VersionData> getVersionXML(String url)
throws IOException {
List<VersionData> result = null;
String Url = url;
URL urlStr = new URL(Url);
HttpURLConnection httpUrlConnection = (HttpURLConnection) urlStr
.openConnection();
InputStream input = httpUrlConnection.getInputStream();
if (input == null) {
return null;
}
// ��ʼ�����ļ�
result = VersionParser.getPersonsByParseXml(input);
if (null != httpUrlConnection)
httpUrlConnection.disconnect();
return result;
}
public static SearchData getSearchOneXML(String bookname_one) {
HashMap<String, Object> result = null;
String Url = null;
try {
Url = UrlHelper.searchurl
+ URLEncoder.encode(bookname_one, "utf-8") + "&fixpos=0";
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
try {
URL urlStr = new URL(Url);
HttpURLConnection httpUrlConnection = (HttpURLConnection) urlStr
.openConnection();
InputStream input = httpUrlConnection.getInputStream();
if (input == null) {
return null;
}
// ��ʼ�����ļ�
result = SearchParser.getSearchResultByXml(input);
if (null != httpUrlConnection)
httpUrlConnection.disconnect();
} catch (Exception err) {
err.printStackTrace();
}
if (result != null) {
List<SearchData> data_list = (List<SearchData>) result
.get("searchitem");
if (data_list.size() < 1) {
return null;
}
return data_list.get(0);
} else {
return null;
}
}
}