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;
    }
}
原文地址:https://www.cnblogs.com/xgjblog/p/3633557.html