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;
        }
    }
  • 相关阅读:
    跳出iframe
    leetcode 225. Implement Stack using Queues
    leetcode 206. Reverse Linked List
    leetcode 205. Isomorphic Strings
    leetcode 203. Remove Linked List Elements
    leetcode 198. House Robber
    leetcode 190. Reverse Bits
    leetcode leetcode 783. Minimum Distance Between BST Nodes
    leetcode 202. Happy Number
    leetcode 389. Find the Difference
  • 原文地址:https://www.cnblogs.com/xgjblog/p/3633557.html
Copyright © 2011-2022 走看看