SAX解析XML

SAX工作原来就是对文档进行顺序扫描,当扫描文档、元素的开始与结束等地方时通知事件处理函数——startDocument()、endDocument()、startElement()、endElement()等等

 

ContentHandler是JAVA类包中一个特殊的SAX接口,位于org.xml.sax包中,它包含了很多接口需要实现,因为我们只需要其中复写某一部分的代码,所以没有必要实现接口的全部内容,所以我们一般继承它的子类DefaultHandler

 

public class SAXxmlActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
		try {
			//得到SAX解析工厂
			SAXParserFactory saxFactory = SAXParserFactory.newInstance();
			//通过SAX解析工厂得到SAX解析器
			SAXParser saxParser = saxFactory.newSAXParser();
			//得到读取XML文件流对象
			XMLReader xmlReader = saxParser.getXMLReader();
			//设置数据元,即要操作的数据流句柄
			xmlReader.setContentHandler(new ReadXML());
			//解析XML文件
			xmlReader.parse(new InputSource(new FileInputStream("/sdcard/connection.xml")));
		} catch (ParserConfigurationException e) {
			System.out.println("1");
		} catch (SAXException e) {
			System.out.println("2");
		} catch (FileNotFoundException e) {
			System.out.println("3");
		} catch (IOException e) {
			System.out.println("4");
		}
    }
}

 

 

解析XML文件监听的事件

 

public class ReadXML extends DefaultHandler {
	@Override
	public void startDocument() throws SAXException {
		System.out.println("startDocument");
	}
	@Override
	public void endDocument() throws SAXException {
		System.out.println("endDocument");
	}
	@Override
	public void endElement(String uri, String localName, String qName)
			throws SAXException {
		System.out.println("uri : " + uri);
		System.out.println("localName : " + localName);
		System.out.println("qName : " + qName);
	}
	@Override
	public void startElement(String uri, String localName, String qName,
			Attributes attributes) throws SAXException {
		System.out.println("startElement");
	}
}

 

你可能感兴趣的:(java,xml,sax)