SAX分析xml文件

来源:互联网 发布:如何关闭mac开机声音 编辑:程序博客网 时间:2024/06/06 05:57

通过SAX进行xml文件分析


1、实现自己的handler类,继承于DefaultHandler。后续作为SAXParser对象parse方法中的参数。主要功能是xml文件分析处理,遇到某一个节点,某一个节点结束,该节点的值等等。


public class SAXHandler extends DefaultHandler{@Overridepublic void startDocument() throws SAXException {log.debug("startDocument");}@Overridepublic void endDocument() throws SAXException {log.debug("endDocument");if(parseFinished != null){parseFinished.parseFinished();}}@Overridepublic void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException {switch(qName){case REQUEST_HEADER_S:break;case REQUEST_HEADER:TLV tlv = new TLV();tlv.setTag(attributes.getValue(TAG));tlv.setLength(attributes.getValue(LENGTH));tlv.setValue(attributes.getValue(VALUE));tlv.setOffset(attributes.getValue(OFFSET));tlvList.add(tlv);log.debug("["+REQUEST_HEADER+"]"+tlv.toString());break;case RESPONSE_HEADER_S:break;case RESPONSE_HEADER:TLV tlv1 = new TLV();tlv1.setTag(attributes.getValue(TAG));tlv1.setLength(attributes.getValue(LENGTH));tlv1.setValue(attributes.getValue(VALUE));tlv1.setOffset(attributes.getValue(OFFSET));resTlvList.add(tlv1);log.debug("["+RESPONSE_HEADER+"]"+tlv1.toString());break;}}@Overridepublic void endElement(String uri, String localName, String qName)throws SAXException {super.endElement(uri, localName, qName);}@Overridepublic void characters(char[] ch, int start, int length)throws SAXException {super.characters(ch, start, length);}}


2、通过工厂方法生成SAXParser对象


saxParserFactory = SAXParserFactory.newInstance();try{saxParser = saxParserFactory.newSAXParser();saxHandler =  new SAXHandler();}catch(SAXException e){log.error(e.getMessage());}catch(ParserConfigurationException e){log.error(e.getMessage());}


3、开始分析xml文件


public boolean parse(){try{saxParser.parse(new File(xmlFilePath), saxHandler);}catch(IOException e){log.error(e.getMessage());return false;}catch(SAXException e){log.error(e.getMessage());return false;}return true;}


0 0