android xml

分两种模型

dom

树结构

xml文件大加载性能差

只能一次性加载,然后在解析

 

sax (simple api fo xml)

事件为驱动模型

操作复杂

逐行解析

可以随时停止读取

 

image

 

 

public class MyContentHandler extends DefaultHandler {
    String hisname, address, money, sex, status;
    String tagName;

    public void startDocument() throws SAXException {
        System.out.println("````````begin````````");
    }

    public void endDocument() throws SAXException {
        System.out.println("````````end````````");
    }

    public void startElement(String namespaceURI, String localName,
            String qName, Attributes attr) throws SAXException {
        tagName = localName;
        if (localName.equals("worker")) {
            //获取标签的全部属性
            for (int i = 0; i < attr.getLength(); i  ) {
                System.out.println(attr.getLocalName(i)   "="   attr.getValue(i));
            }
        }
    }

    public void endElement(String namespaceURI, String localName, String qName)
            throws SAXException {
        //在workr标签解析完之后,会打印出所有得到的数据
        tagName = "";
        if (localName.equals("worker")) {
            this.printout();
        }
    }
    public void characters(char[] ch, int start, int length)
            throws SAXException {
        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);
    }

    private void printout() {
        System.out.print("name: ");
        System.out.println(hisname);
        System.out.print("sex: ");
        System.out.println(sex);
        System.out.print("status: ");
        System.out.println(status);
        System.out.print("address: ");
        System.out.println(address);
        System.out.print("money: ");
        System.out.println(money);
        System.out.println();
    }

}

 

 

class ParseButtonListener implements OnClickListener{

        @Override
        public void onClick(View v) {
            HttpDownloader hd = new HttpDownloader();
            String resultStr = hd.download("http://192.168.1.107:8081/voa1500/test.xml");
            System.out.println(resultStr);
            try{
                //创建一个SAXParserFactory
                SAXParserFactory factory = SAXParserFactory.newInstance();
                XMLReader reader = factory.newSAXParser().getXMLReader();
                //为XMLReader设置内容处理器
                reader.setContentHandler(new MyContentHandler());
                //开始解析文件
                reader.parse(new InputSource(new StringReader(resultStr)));
            }
            catch(Exception e){
                e.printStackTrace();
            }
        }
        
    }

 

 

AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET"/>

posted on 2012-07-08 19:50  马德华  阅读(304)  评论(0编辑  收藏  举报