微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SAX分析xml文件

通过SAX进行xml文件分析


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


public class SAXHandler extends DefaultHandler{

		@Override
		public void startDocument() throws SAXException {
			log.debug("startDocument");
		}

		@Override
		public void endDocument() throws SAXException {
			log.debug("endDocument");
			if(parseFinished != null){
				parseFinished.parseFinished();
			}
			
		}

		@Override
		public 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;
			}
			
		}

		@Override
		public void endElement(String uri,String qName)
				throws SAXException {
			super.endElement(uri,localName,qName);
		}

		@Override
		public 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;
	}

原文地址:https://www.jb51.cc/xml/299294.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。