一:模板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

待续。。。

posted on 2012-08-14 10:07  alex_wongh  阅读(1026)  评论(0编辑  收藏  举报