XML解析:pull & SAX

1.pull解析

apps>  // xml Demo
    <app>
          <id>1</id>
          <name>node1</name>
          <version>1</version>
    </app>
    <app>
          <id>2</id>
          <name>node2</name>
          <version>1</version>
    </app>
    <app>
          <id>3</id>
          <name>node3</name>
          <version>1</version>
    </app>
</apps>
    try {
            XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
            XmlPullParser parser = factory.newPullParser();
            parser.setInput(new StringReader(xmlData));
            int type = parser.getEventType();
            String id = "";
            String name = "";
            String version = "";
            while (type != XmlPullParser.END_DOCUMENT) {
                String nodeName = parser.getName();
                switch (type) {
                    case XmlPullParser.START_TAG:
                        if ("id".equals(nodeName)) {
                            id = parser.nextText();
                        } else if ("name".equals(nodeName)) {
                            name = parser.nextText();
                        } else if () {
                        }
                        break;
                    case XmlPullParser.END_TAG:
                        if ("app".equals(nodeName)) {
                            Log.d(TAG, "id id " + id);
                        }
                        break;
                }
                type = parser.next();
            }
        }catch(Exception e){

        }

2.SAX解析


        try{
            SAXParserFactory factory=SAXParserFactory.newInstance();
            XMLReader xmlReader=factory.newSAXParser().getXMLReader();
     //       SAXHandler handler=new SAxHandler();
            xmlReader.setContentHandler(handler);
            xmlReader.parse(new InputSource(new StringReader(xmlData)));
          }catch (Exception e){

          }
public class SAXHandler extends DefaultHandler{
        private String nodeName;
        private StringBuilder id,name,version;
        @Override
        public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
            nodeName=localName;
        }

        @Override
        public void characters(char[] ch, int start, int length) throws SAXException {
            if("id".equals(nodeName)){
                id.append(ch,start,length);
            }else if(){}
        }

        @Override
        public void endElement(String uri, String localName, String qName) throws SAXException {
            if("app".equals(localName)){
                Log.d;
            }
        }

        @Override
        public void startDocument() throws SAXException {
            id=new StringBuilder();
            name=new StringBuilder();
            version=new StringBuilder();
        }

        @Override
        public void endDocument() throws SAXException {
            super.endDocument();
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值