加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

SAX分析xml文件

发布时间:2020-12-15 23:08:29 所属栏目:百科 来源:网络整理
导读:通过SAX进行xml文件分析 1、实现自己的handler类,继承于DefaultHandler。后续作为SAXParser对象parse方法中的参数。主要功能是xml文件分析处理,遇到某一个节点,某一个节点结束,该节点的值等等。 public class SAXHandler extends DefaultHandler{@Overri

通过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;
	}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读