SAX解析XML

来源:互联网 发布:网络摄像头直接接电脑 编辑:程序博客网 时间:2024/06/05 11:29

Book.xml源文件

<?xml version="1.0" encoding="UTF-8"?><BOOKS:BOOKS>    <BOOK ID="1001">        <NAME>三国演义</NAME>        <PRICE>15</PRICE>    </BOOK>    <BOOK ID="1002">        <NAME>水浒传</NAME>        <PRICE>14</PRICE>    </BOOK></BOOKS:BOOKS>

下面开始解析XML

//SAX解析工厂SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();//工厂创建解析器SAXParser saxParser = saxParserFactory.newSAXParser();//解析器获取读取器XMLReader xmlReader = saxParser.getXMLReader();//在读取器中注册监听MyContentHandler mch = new MyContentHandler();xmlReader.setContentHandler(mch); //读取器开始解析xmlReader.parse("Book.xml");

实现解析监听接口ContentHandler

//自定义内部类,实现监听接口class MyContentHandler implements ContentHandler{    @Override    public void startDocument() throws SAXException {        System.out.println("文档开始");    }    @Override    public void endDocument() throws SAXException {        System.out.println("文档结束");    }    @Override    public void startElement(String uri, String localName, String qName,            Attributes atts) throws SAXException {        //uri:名称空间 URI,如果没有为""空串        //localName:标签名称,不带前缀(如果没有执行名称空间处理,为""空串)        //qName:标签名称:带有前缀        //atts:属性        System.out.println("标签的开始");    }    @Override    public void endElement(String uri, String localName, String qName)            throws SAXException {        System.out.println("标签的结束");    }    @Override    public void characters(char[] ch, int start, int length)            throws SAXException {        System.out.println("标签体:"+new String(ch,start,length));    }    @Override    public void setDocumentLocator(Locator locator) {    }    @Override    public void startPrefixMapping(String prefix, String uri)            throws SAXException {    }    @Override    public void endPrefixMapping(String prefix) throws SAXException {    }    @Override    public void ignorableWhitespace(char[] ch, int start, int length)            throws SAXException {    }    @Override    public void processingInstruction(String target, String data)            throws SAXException {    }    @Override    public void skippedEntity(String name) throws SAXException {    }}
2 0
原创粉丝点击