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"); } }
回忆过去,珍惜现在,放眼未来