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文件里的所有值。
  • 相关阅读:
    爬取 qq,酷我,千千VIP音乐下
    window10虚拟机安装
    爬取qq,酷我,千千VIP音乐 上
    BEAUTIFUL SOUP
    多线程爬取与存储基础
    CODEFORCE ROUND #625 DIV2
    【POJ
    【POJ
    【POJ
    【POJ
  • 原文地址:https://www.cnblogs.com/a446276468/p/5549954.html
Copyright © 2011-2022 走看看