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 localName, 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;
	}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值