zoukankan      html  css  js  c++  java
  • 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;
        }
    }
  • 相关阅读:
    Ubuntu下添加定时任务执行php文件
    linux的scp命令可以在linux服务器之间复制文件和目录
    Linux下OpenSSL加密解密压缩文件(AES加密压缩文件)
    解决远程连接mysql很慢的方法(mysql_connect 打开连接慢)
    PHP URL参数获取方式的四种例子
    url格式化函数http_build_query() 和parse_str() 函数
    php 调用 webservice 中文乱码解决方案
    Linux添加vsftp账户和设置目录权限
    PHP 的 HMAC_SHA1算法 实现
    MySQL多表关联查询数量
  • 原文地址:https://www.cnblogs.com/xgjblog/p/3633557.html
Copyright © 2011-2022 走看看