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

因为有很多,所以想到了用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文件里的所有值。
posted on 2016-06-01 16:04  夜。空  阅读(217)  评论(0编辑  收藏  举报