标签:事件处理器 读取 指定 book strong dom解析 saxparser show images
XML解析:XML技术是Android平台的应用基础,
Android提供了多种解析XML的方式:SAX解析、DOM解析、PULL解析
SAX ——Simple API forXML (XML简单的API)
——解析速度快、占用内存少
——提供一组简单的API用于解析XML文件
——SAX在解析XML文件前,先指定一个解析事件处理器(Handler),SAX会对XML文档进行简单的顺序扫描,当扫描到【文档(Document)的开始和结束、元素(Element)的开始和结束的】标记Tag时,会给之前指定的解析事件处理器发送消息,由处理器来处理相应的事件。 当XML文档扫描完毕,则整个解析过程结束。
SAXParserFactory.newInstance
SAXParserFactory.newInstance
DefaultHandler.startDocument ()
DefaultHandler.endDocument ()
DefaultHandler.startElement (String uri, String localName, String qName, Attributes attributes)
DefaultHandler.endElement (String uri, String localName, String qName, Attributes attributes)
参数:
uri:命名空间
localName:不带命名空间的标签名
qName:带命名空间的标签名
attributes:所有属性和属性值
DefaultHandler. characters (char [] ch, int start, int length)
自定义xml文件存放到res/raw文件中
1 public void onCreate(Bundle savedInstanceState) { 2 super.onCreate(savedInstanceState); 3 SAXParserFactory spf=SAXParserFactory.newInstance();//SAX解析器的工厂对象 4 try { 5 SAXParser sp=spf.newSAXParser();//SAX解析器对象 6 //读取资源文件 7 InputStream is=getResources().openRawResource(R.raw.book); 8 //创建SAX事件处理器对象 9 DefaultHandler dh=new DefaultHandler(){ 10 private String name; 11 public void startElement(String uri, String localName, 12 String qName, Attributes attributes) 13 throws SAXException { 14 name=localName; 15 } 16 //获得内容 17 public void characters(char[] ch, int start, int length) 18 throws SAXException { 19 if("name".equals(name)){ //当标签名是name时,就去获得文本 20 Toast.makeText(Sax0.thi s,new String(ch,start,length), 1000).show(); 21 name=null; 22 } 23 } 24 }; 25 sp.parse(is, dh); 26 } catch (ParserConfigurationException e) { e.printStackTrace(); 27 } catch (SAXException e) { e.printStackTrace(); 28 } catch (IOException e) { e.printStackTrace(); } 29 }
标签:事件处理器 读取 指定 book strong dom解析 saxparser show images
原文地址:http://www.cnblogs.com/leelee/p/6994650.html