staxelementparser.java

来自「esri的ArcGIS Server超级学习模板程序(for java)」· Java 代码 · 共 49 行

JAVA
49
字号
package com.esri.solutions.jitk.datasources.ogc.wfs.parsing.stax;

import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.XMLEvent;

//import org.apache.log4j.Logger;


public class StaxElementParser {
	//private static final Logger _logger = Logger.getLogger(StaxElementParser.class);
	private Map<String, IElementParser> _delegateParsers;
   
    public StaxElementParser() {
    	_delegateParsers = new HashMap<String, IElementParser>();
    }
    
    public void registerParser(String elementName, IElementParser parser) {
    	_delegateParsers.put(elementName, parser);
    }
    
    public void parse(InputStream is) throws XMLStreamException, ParsingException {
		XMLInputFactory xmlif = XMLInputFactory.newInstance();
		XMLEventReader xmler = xmlif.createXMLEventReader(is);
		XMLEvent event;
		
		while (xmler.hasNext()) {
			event = xmler.nextEvent();
			
			if (event.isStartElement()) {
				String elementName = event.asStartElement().getName().getLocalPart();
				//_logger.debug("Element " + elementName + " encountered");
				
				if (_delegateParsers.containsKey(elementName)) {
            		//_logger.debug(elementName + " encountered, delegating parsing");
					IElementParser parser = (IElementParser) _delegateParsers.get(elementName);
            		parser.parse(xmler, event);
            	} 
			} 
		}		
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?