android xml解析
一:模板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
*
* 使用时如下:
* 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
;
}
}