SAX 方式解析 XML

    SAXParserFactory factory = SAXParserFactory.newInstance();
        try {
            SAXParser parser = factory.newSAXParser();
            //SAXParserHandler新建类继承DefaultHandler类,重写其中方法来解析xml
            SAXParserHandler handler = new SAXParserHandler();
            parser.parse("tree.xml", handler);
        } 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();
        }
public class SAXParserHandler extends DefaultHandler {
    
    /**
     * 文档开始解析时调用的方法
     */
    @Override
    public void startDocument() throws SAXException {
        // TODO Auto-generated method stub
        super.startDocument();
    }
    
    /**
     * 文档结束解析时调用的方法
     */
    @Override
    public void endDocument() throws SAXException {
        // TODO Auto-generated method stub
        super.endDocument();
    }
    
    /**
     * 解析开始标签
     */
    @Override
    public void startElement(String uri, String localName, String name,
            Attributes attributes) throws SAXException {
        // TODO Auto-generated method stub
        super.startElement(uri, localName, name, attributes);
        System.out.println("节点名:"+name);
        //根据属性名获取属性值
//        String id = attributes.getValue("id");
        //遍历属性
        for (int i = 0; i < attributes.getLength(); i++) {
            System.out.println("属性名:"+attributes.getQName(i));
            System.out.println("属性值:"+attributes.getValue(i));
        }
    }
    
    /**
     * 解析结束标签
     */
    @Override
    public void endElement(String uri, String localName, String name)
            throws SAXException {
        // TODO Auto-generated method stub
        super.endElement(uri, localName, name);
        
    }
    
    /**
     * 解析文本内容
     */
    @Override
    public void characters(char[] ch, int start, int length)
            throws SAXException {
        // TODO Auto-generated method stub
        super.characters(ch, start, length);
        String value = new String(ch,start,length);
        System.out.println("节点间文本:"+value);
    }
}

 

posted @ 2015-01-19 14:58  知之为知之  阅读(112)  评论(0编辑  收藏  举报