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
;
}
}