zoukankan      html  css  js  c++  java
  • SAX解析xml文件

    需要做一个银行名字的列表。

    因为有很多,所以想到了用xml来保存,然后uongDAX解析。

    public class BankSelectActivity extends BaseActivity{
         private List list;//存放搜索结果
         
         @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    //            setContentView(R.layout.citylist);
            doMyMission();
        }    
    
        /**
         * 使用SAX解析器解析XML文件的方法
         */
        private void doMyMission() {
            try {
                //获取AssetManager管理器对象
                AssetManager as = getAssets();
                //通过AssetManager的open方法获取到banks.xml文件的输入流
                InputStream is = as.open("banks_num.xml");
                //通过获取到的InputStream来得到InputSource实例
                InputSource is2 = new InputSource(is);
                //使用工厂方法初始化SAXParserFactory变量spf
                SAXParserFactory spf = SAXParserFactory.newInstance();
                //通过SAXParserFactory得到SAXParser的实例
                SAXParser sp = spf.newSAXParser();
                //通过SAXParser得到XMLReader的实例
                XMLReader xr = sp.getXMLReader();
                //初始化自定义的类MySaxHandler的变量msh,将beautyList传递给它,以便装载数据
                BankNumHandler msh = new BankNumHandler(list);
                //将对象msh传递给xr
                xr.setContentHandler(msh);
                //调用xr的parse方法解析输入流
                xr.parse(is2);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        class BankNumHandler extends DefaultHandler {
            private List mList;
            //声明一个字符串变量
            private String content;
            private String key;
    
            public BankNumHandler(List list) {
                this.mList = list;
            }
    
            /**
             * 当SAX解析器解析到某个属性值时,会调用的方法
             * 其中参数ch记录了这个属性值的内容
             */
            @Override
            public void characters(char[] ch, int start, int length)
                    throws SAXException {
                super.characters(ch, start, length);
                content = new String(ch, start, length);
            }
    
            /**
             * 当SAX解析器解析到某个元素结束时,会调用的方法
             * 其中localName记录的是元素属性名
             */
            @Override
            public void endElement(String uri, String localName, String qName)
                    throws SAXException {
                super.endElement(uri, localName, qName);
                if ("key".equals(localName)) {
                    key = content;
                } else if ("integer".equals(localName)) {
                    if (key.equals(mList.get(0))) {
                        mList.add(content);
                        netDialog.dismiss();
                    }
                }
            }
        }
    }

    部分xml文件的内容:

    <dict>
        <key>上海银行</key>
        <integer>xxxxxx</integer>
        <key>上饶银行</key>
        <integer>xxxxxx</integer>
        <key>东莞银行</key>
        <integer>xxxxxx</integer>
    </dict>

    当调用

    doMyMission()方法结束后,list中就保存了xml文件里的所有值。
  • 相关阅读:
    聊聊Unity2018的LWRP和混合光照
    不能直接获取?聊聊如何在Shader Graph中获取深度图
    还原堆栈信息,分析地形系统使用ASTC格式的纹理导致Crash的问题
    巧妙设置Texture Type,将ShadowMask内存占用变成之前的1/4
    开发自定义ScriptableRenderPipeline,将DrawCall降低180倍
    Signed Distance Field Shadow in Unity
    Daily Pathtracer!安利下不错的Pathtracer学习资料
    聊聊LightProbe原理实现以及对LightProbe数据的修改
    Scala学习笔记(六):本地函数、头等函数、占位符和部分应用函数
    Scala学习笔记(五):内建控制循环
  • 原文地址:https://www.cnblogs.com/a446276468/p/5549954.html
Copyright © 2011-2022 走看看