XML解析

1.SAXPARSER解析:

  

public void SaxParser(InputStream input){
        SAXParserFactory factory = SAXParserFactory.newInstance();
        try {
            SAXParser parser = factory.newSAXParser();
            XMLReader reader = parser.getXMLReader();  
            reader.setContentHandler(new MyHandler());  
            reader.parse(new InputSource(input));  
        } catch (ParserConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }

private class MyHandler extends  DefaultHandler{

        private StringBuilder builder;  
        @Override
        public void endDocument() throws SAXException {
            // TODO Auto-generated method stub
            super.endDocument();
        }

        @Override
        public void endElement(String uri, String localName, String qName)
                throws SAXException {
            // TODO Auto-generated method stub
            super.endElement(uri, localName, qName);
            
            System.out.println(builder.toString());
        }

        @Override
        public void startDocument() throws SAXException {
            // TODO Auto-generated method stub
            super.startDocument();
            builder = new StringBuilder();
        }

        
        
        @Override
        public void characters(char[] ch, int start, int length)
                throws SAXException {
            // TODO Auto-generated method stub ,输出value
            super.characters(ch, start, length);
             builder.append(ch, start, length);    
             
        }

        @Override
        public void startElement(String uri, String localName, String qName,
                Attributes attributes) throws SAXException {
            // TODO Auto-generated method stub
            super.startElement(uri, localName, qName, attributes);
            builder.setLength(0);  
        }
        
    }

2 DOM解析

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        try {
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document doc = builder.parse(input);
            Element rootElement = doc.getDocumentElement();
            NodeList items = rootElement.getElementsByTagName("result");  
            for(int i=0;i<items.getLength();i++){
                NodeList list = items.item(i).getChildNodes();
                
                for(int j=0;j<list.getLength();j++){
                    Node node = list.item(j);
                    System.out.println(node.getFirstChild().getNodeValue());
                }
            }
            
        } catch (ParserConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

3 PullParser

  

private void PullParser(InputStream is){
        XmlPullParser parser = Xml.newPullParser();
        
        try {
            parser.setInput(is, "UTF-8");
            int eventType = parser.getEventType();  
            while (eventType != XmlPullParser.END_DOCUMENT){
                switch (eventType) {
                case XmlPullParser.START_DOCUMENT:
                    //books = new ArrayList<Book>();
                    break;
                case XmlPullParser.START_TAG:
                    if (parser.getName().equals("book")) {
                        //book = new Book();
                    } else if (parser.getName().equals("id")) {
                        eventType = parser.next();
                        //book.setId(Integer.parseInt(parser.getText()));
                        System.out.println(parser.getText());
                    } else if (parser.getName().equals("name")) {
                        eventType = parser.next();
                        //book.setName(parser.getText());
                        System.out.println(parser.getText());
                    } else if (parser.getName().equals("price")) {
                        eventType = parser.next();
                        System.out.println(parser.getText());
                        //book.setPrice(Float.parseFloat(parser.getText()));
                    }
                    break;
                case XmlPullParser.END_TAG:
                    if (parser.getName().equals("book")) {
                        //books.add(book);
                        //book = null;    
                    }
                    break;
                }
                eventType = parser.next();
            }
        } catch (XmlPullParserException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
原文地址:https://www.cnblogs.com/yk00/p/2891162.html