zoukankan      html  css  js  c++  java
  • Android数据篇SAX解析XML

    作为三大解析XML方式之一,这里介绍的是SAX解析:

    第一步:

            try {
                //创建一个解析器的工厂
                SAXParserFactory factory = SAXParserFactory.newInstance();
                XMLReader xmlReader = factory.newSAXParser().getXMLReader();
                //为XMLReader设置内容处理器
                xmlReader.setContentHandler(new MyContentHandler());
                xmlReader.parse(new InputSource(new StringReader(str)));
            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }

    第二步:

    public class MyContentHandler extends DefaultHandler{
        private String tagName;//标示 
        private String hisName,address,sex,status,money;
        
        @Override
        public void characters(char[] ch, int start, int length)
                throws SAXException {
            // TODO Auto-generated method stub
            if(tagName.equals("name")){
                hisName = new String(ch,start,length);
            }else if(tagName.equals("sex")){
                sex = new String(ch, start, length);
            }else if(tagName.equals("status")){
                status = new String(ch, start, length);
            }else if(tagName.equals("address")){
                address = new String(ch, start, length);
            }else if(tagName.equals("money")){
                money = new String(ch, start, length);
            }
        }
    
        @Override
        public void endDocument() throws SAXException {
            // TODO Auto-generated method stub
            Log.i("+++","end");
            super.endDocument();
        }
    
        @Override
        public void endElement(String uri, String localName, String qName)
                throws SAXException {
            // TODO Auto-generated method stub
            if(localName.equals("worker")){
                //解析结束 打印出相关字段
                printOut();
            }
            super.endElement(uri, localName, qName);
        }
    
        @Override
        public void startDocument() throws SAXException {
            // TODO Auto-generated method stub
            Log.i("+++", "start");
            super.startDocument();
        }
        
        /**
         * @param uri 当前标签的命名空间
         * @param localName 不带前缀
         * @param qName 带前缀 
         * @param attributes 标签的所有属性
         */
        @Override
        public void startElement(String uri, String localName, String qName,
                Attributes attributes) throws SAXException {
            // TODO Auto-generated method stub
            tagName = localName;
            if(localName.equals("worker")){
                for(int i=0;i<attributes.getLength();i++){
                    System.out.print(attributes.getLocalName(i)+"="+attributes.getValue(i));
                }
            }
            super.startElement(uri, localName, qName, attributes);
        }
        
        private void printOut(){
            Log.i("json", "name: " + hisName);
            Log.i("json", "sex= " + sex);
            Log.i("json", "address: " + address);
            Log.i("json", "status= " + status);
            Log.i("json", "money= " + money);
        }
  • 相关阅读:
    Java中final、finally、finalize的区别
    GC垃圾回收机制详解
    spring ioc Di
    获取不同语言版本的任务状态
    转:系统架构师-基础到企业应用架构
    转:SharePoint【Site Definition 系列】
    转:SharePoint【ECMAScript对象模型系列】
    转:SharePoint【Ribbon系列】
    SharaPoint Farm Administrator密码变换及管理员转换
    转:Programming with Features(操作Feature)
  • 原文地址:https://www.cnblogs.com/gongcb/p/2507008.html
Copyright © 2011-2022 走看看