zoukankan      html  css  js  c++  java
  • SAX解析

    SAX是一种较长使用的解析方式,要使用它首先要创建一个类继承DefaultHandler,并且重写5个方法,下面我们来看一下

    startDocument()方法会在xml解析的时候调用,

    startElement()方法会在开始解析某个节点的时候调用,

    characters()方法中获取节点中的内容的时候调用,

    endElement()方法会在完成某个节点解析的时候调用,

    endDocument()方法完成整个XML解析的时候调用。

    public class ContenltHandler extends DefaultHandler {
    
        private String mnodeName;
        private StringBuilder mid;
    
        @Override
        public void startDocument() throws SAXException {
            //初始化节点
            mid = new StringBuilder();
        }
    
        @Override
        public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
           //获取节点的名字
            mnodeName = localName;
        }
    
        @Override
        public void characters(char[] ch, int start, int length) throws SAXException {
           //根据当前节点名判断内容 
            if ("id".equals(mnodeName)){
          //成功后将内容添加到对应的StringBuilder对象中 mid.append(ch,start,length); } } @Override public void endElement(String uri, String localName, String qName) throws SAXException { if ("student".equals(localName)){ Log.d("id",mid.toString().trim()); //将StringBuilder里面的数据清空 mid.setLength(0); } } @Override public void endDocument() throws SAXException { super.endDocument(); } }

     下面还是和okHttp方法相同

    1.定义一个OkHttp实例

    2.利用Request得到uri

    3.通过实例发送和接收返回的数据

     private void parseSAX() {
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                    OkHttpClient click = new OkHttpClient();
                    Request request = new Request.Builder().url("http://10.39.1.16/1.xml").build();
                        Response response= click.newCall(request).execute();
                     String returnData=  response.body().string();
                        parserSaxpull(returnData);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }).start();
        }
    
        public void parserSaxpull(String data){
            try {
                SAXParserFactory factory = SAXParserFactory.newInstance();
                XMLReader xmlreader=factory.newSAXParser().getXMLReader();
                ContentHandler hander= new ContenltHandler();
                xmlreader.setContentHandler(hander);//将ContentHandler设置到XMLReader,把材料加到机器中
    
                //开始解析
                xmlreader.parse(new InputSource(new StringReader(data)));
    
    
            }catch (Exception e){}
    
        }
    
  • 相关阅读:
    现实世界的Windows Azure:采访Definition 6首席技术官Paul Hernacki
    CloudConnect回顾,以及数据的未来
    现已可用:集成了Web Deploy的Windows Azure SDK 1.4更新版
    使用Azure SDK 1.4.1中的Web Deploy
    现实世界的SQL Azure:采访Zitec公司CEO,Alexandru Lapusan
    Microsoft和Toyota宣布战略合作伙伴关系,联手构建基于Windows Azure的下一代远程通信系统
    Delphi 2007 的重构功能
    关于类的入门的例子(6): 类引用示例
    获取所有汉字与 Unicode 的对照表
    关于类的入门例子(4): property
  • 原文地址:https://www.cnblogs.com/lyl123/p/7199497.html
Copyright © 2011-2022 走看看