一:模板1
1.1xml格式如下
1.2解析类如下:SAXGameService.java源码
package com.XMLhandler;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import com.yxyun.domain.Game;
/**
* @Author BraveStarr
* @QQ 1733259520
* @Blog http://blog.sina.com.cn/wanghubravestarr
*
* 适用格式见上图或http://game.yxyun.com/WS/WS_Bestv_VOS.php?uid=387881&message=gamemall的源代码
* 使用时如下:
* final SAXGameService saxGameService = new SAXGameService();
* // 使用类装载器获取流数据
* new Thread(new Runnable() {
* @Override
* public void run() {
* try {
* InputStream inStream = InputStreamUtil
* .getStreamContent("http://game.yxyun.com/WS/WS_Bestv_VOS.php?uid=387881&message=gamemall");
* List<Game> games = saxGameService.readXml(inStream);
* Message message = new Message();
* message.what = REQUEST_HOME_LISTINFO_SUCCESS;
* // 得到结果数据解析成getRemoteData()中的数据
* message.obj = getRemoteData(games);
* mHandler.sendMessage(message);
* } catch (Exception e) {
* Message message = new Message();
* message.what = XML_PARSER_ERROR;
* // 得到结果数据解析成getRemoteData()中的数据
* mHandler.sendMessage(message);
* }
* }
* }).start();
*/
public class SAXGameService {
public List<Game> readXml(InputStream inStream) throws Exception {
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser saxParser = spf.newSAXParser();// 创建解析器
// 设置解析器相关特性,http://xml.org/sax/features/namespace = true
// 表示开启命名空间特性
// saxParser.setProperty("http://xml.org/sax/features/namespace", true);
GameDefaultHandler handler = new GameDefaultHandler();
saxParser.parse(inStream, handler);
inStream.close();
return handler.getGames();
}
private final class GameDefaultHandler extends DefaultHandler {
private List<Game> games = null;
private Game game = null;
private String tag = null;
@Override
public void startDocument() throws SAXException {
games = new ArrayList<Game>();
}
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
if ("gameinfo".equals(localName)) {
game = new Game();
}
tag = localName;
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
if ("gameinfo".equals(localName) && game != null) {
games.add(game);
game = null;
}
tag = null;
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
if (tag != null) {
String data = new String(ch, start, length);
if ("ispack".equals(tag)) {
game.setIspack(data);
} else if ("gameid".equals(tag)) {
game.setGameid(data);
} else if ("gameName".equals(tag)) {
game.setGameName(data);
}else if ("price".equals(tag)) {
game.setPrice(Integer.parseInt(data));
}else if ("days".equals(tag)) {
game.setDays(Integer.parseInt(data));
}else if ("is_buy".equals(tag)) {
game.setIs_buy(data);
}else if ("type".equals(tag)) {
game.setType(data);
}else if ("language".equals(tag)) {
game.setLanguage(data);
}else if ("gameimage".equals(tag)) {
game.setGameimage(data);
}else if ("gamehot".equals(tag)) {
game.setGamehot(data);
}else if ("introduction".equals(tag)) {
game.setIntroduction(data);
}else if ("gamevideo".equals(tag)) {
game.setGamevideo(data);
}
}
}
/**
* @return the games
*/
public List<Game> getGames() {
return games;
}
}
}
Game.java如下
package com.yxyun.domain;
import android.text.TextUtils;
public class Game {
private String ispack = "0";//是否为礼包,"1"表示礼包、"0"表示游戏
private String gameid;//游戏或礼包id,ispack为礼包时,对应礼包id,否则对应游戏id
private String gameName;//游戏名或礼包名
private Integer price=0;//游戏或礼包价格
private Integer days=0;//游戏或礼包服务期
private String is_buy;//游戏或礼包是否已经购买
private String type="无";//(游戏)所属礼包类型
private String language;//(游戏)语言
private String gameimage;//游戏或礼包图片路径
private String gamehot;//游戏人气
private String introduction;//游戏介绍
private String gamevideo;//游戏视频
public String getGamevideo() {
return gamevideo;
}
public void setGamevideo(String gamevideo) {
this.gamevideo = gamevideo;
}
public String getGamehot() {
return gamehot;
}
public void setGamehot(String gamehot) {
this.gamehot = gamehot;
}
public String getIntroduction() {
return introduction;
}
public void setIntroduction(String introduction) {
this.introduction = introduction;
}
public String getIspack() {
return ispack;
}
public void setIspack(String ispack) {
this.ispack = ispack;
}
public String getGameid() {
return gameid;
}
public void setGameid(String gameid) {
this.gameid = gameid;
}
public String getGameName() {
return gameName;
}
public void setGameName(String gameName) {
this.gameName = gameName;
}
public Integer getPrice() {
return price;
}
public void setPrice(Integer price) {
this.price = price;
}
public Integer getDays() {
return days;
}
public void setDays(Integer days) {
this.days = days;
}
public String getIs_buy() {
return is_buy;
}
public void setIs_buy(String is_buy) {
this.is_buy = is_buy;
}
public String getType() {
return type;
}
public void setType(String type) {
if(!TextUtils.isEmpty(type)){
this.type = type;
}
}
public String getLanguage() {
return language;
}
public void setLanguage(String language) {
this.language = language;
}
public String getGameimage() {
return gameimage;
}
public void setGameimage(String gameimage) {
this.gameimage = gameimage;
}
}
InputStreamUtil.java类如下
package com.utils;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class InputStreamUtil {
/**
* 获取输入流
* @param urlpath 文件路径
* @return
* @throws Exception
*/
public static InputStream getStreamContent(String urlpath)
throws Exception {
URL url = new URL(urlpath);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");// 设置请求方式,默认为"GET"
conn.setConnectTimeout(6 * 1000);// 设置请求超时
// 请求图片或网页地址如果成功,返回响应码为200
if (conn.getResponseCode() == 200) {
return conn.getInputStream();
}
return null;
}
}
二, 模板2
待续。。。