XML之sax解析
2016-06-29 10:44
375 查看
/*
xml一共有三种解析放方法
①DOM解析
②SAX解析
③Android内置的Pull解析
*/
//第一种
②SAX解析
SAX解析XML文档采用事件驱动模式。什么是事件驱动模式?
它将XML文档转换成一系列的事件,由单独的事件处理器来决定如何处理。
//写一个类继承SaxHandlerBase extends DefaultHandler
/*
里面重写五个方法 注意集合数据建立一个集合的get方法方便调用
*/
xml一共有三种解析放方法
①DOM解析
②SAX解析
③Android内置的Pull解析
*/
//第一种
②SAX解析
SAX解析XML文档采用事件驱动模式。什么是事件驱动模式?
它将XML文档转换成一系列的事件,由单独的事件处理器来决定如何处理。
//新建一个工厂类SAXParserFactory SAXParserFactory factory = SAXParserFactory.newInstance(); //让工厂类产生一个SAX的解析类SAXParser SAXParser newSAXParser = factory.newSAXParser(); //实例化SaxHandlerBase SaxHandlerBase saxHandlerBase = new SaxHandlerBase(); //调用解析类方法 newSAXParser.parse(getAssets().open("languages.xml"),saxHandlerBase); List<Books> list = saxHandlerBase.getList(); for (Books books : list) { Log.i(tag,books.toString()); } listView.setAdapter(new ArrayAdapter<Books>(this,android.R.layout.simple_dropdown_item_1line, list));
//写一个类继承SaxHandlerBase extends DefaultHandler
/*
里面重写五个方法 注意集合数据建立一个集合的get方法方便调用
*/
@Override public void startDocument() throws SAXException { // TODO Auto-generated method stub super.startDocument(); list=new ArrayList<Books>(); Log.i(tag,"*************开始解析文档**************"); } @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { // TODO Auto-generated method stub super.startElement(uri, localName, qName, attributes); name=qName; Log.i(tag,"*************开始解析--元素**************"); if (qName.equals("item")) { books=new Books(); books.setId(attributes.getValue("id")); } } @Override public void characters(char[] ch, int start, int length) throws SAXException { // TODO Auto-generated method stub super.characters(ch, start, length); String string = new String(ch, start, length); if (!string.trim().equals("")) { Log.i(tag,"*************开始解析--元素name"+name+"****"+"string="+string+"**********"); } if (name.equals("name")&&!string.trim().equals("")) { books.setName(string); } else if (name.equals("ide")&&!string.trim().equals("")) { books.setAuthor(string); } } @Override public void endElement(String uri, String localName, String qName) throws SAXException { // TODO Auto-generated method stub super.endElement(uri, localName, qName); if (qName.equals("item")) { list.add(books); } Log.i(tag,"*************结束解析--元素**************"); } @Override public void endDocument() throws SAXException { // TODO Auto-generated method stub super.endDocument(); Log.i(tag,"*************结束解析文档**************"); } public List<Books> getList() { return list; }
相关文章推荐
- XML 与 JSON 优劣对比
- As3.0 xml + Loader应用代码
- 网马生成器 MS Internet Explorer XML Parsing Buffer Overflow Exploit (vista) 0day
- ext读取两种结构的xml的代码
- 实例解析Ruby程序中调用REXML来解析XML格式数据的用法
- Ruby中XML格式数据处理库REXML的使用方法指南
- C#中如何使用 XmlReader 读取XML文件
- C#针对xml基本操作及保存配置文件应用实例
- Ruby使用REXML库来解析xml格式数据的方法
- Ruby程序中创建和解析XML文件的方法
- Ruby的XML格式数据解析库Nokogiri的使用进阶
- asp下查询xml的实现代码
- sqlserver FOR XML PATH 语句的应用
- 使用sp_xml_preparedocument处理XML文档的方法
- EBS xml publisher中文乱码问题及解决办法
- C#中的Linq to Xml详解
- C#操作XML文件实例汇总
- C# XML序列化方法及常用特性总结分析
- SQL Server中的XML数据进行insert、update、delete