用SAX解析xml文件
来源:互联网 发布:python窗口程序 编辑:程序博客网 时间:2024/05/22 11:54
在Android中有几种xml解析方式,下面我说其中一种,在Android平台上可以使用Simple API for XML(SAX):
我的资源文件:value.xml
<?xml version="1.0" encoding="UTF-8"?><xml><PersonModule="1"><name>王二</name><age>18</age></Person><PersonModule="2"><name>张三</name><age>20</age></Person><PersonModule="3"><name>李四</name><age>22</age></Person></xml>
我的程序:
import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import javax.xml.parsers.ParserConfigurationException;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;public class Sax extends DefaultHandler { private String tag ;//标签 private String tag_value;//存放临时标签 private String name; private String age; /** * 得到到标签元素值 * Packeage Module="fireware", Module 为属性 ,"fireware"为属性值。 <Version>smart.01.sc</Version> Version 为标签元素,smart.01.sc为元素值。 */ @Override public void characters(char[] ch, int start, int length) throws SAXException { // TODO Auto-generated method stub if (tag != null) { tag_value = new String(ch, start, length); if (tag.equals("name")) { name = tag_value; System.out.println(" name = " + name); } if (tag.equals("age")) { age = tag_value; System.out.println(" age = " + age); } } } /** * 解析结束执行一次 */ @Override public void endDocument() throws SAXException { // TODO Auto-generated method stub super.endDocument(); } /** * 遇到结束标签就会执行 */ @Override public void endElement(String uri, String localName, String qName) throws SAXException { // TODO Auto-generated method stub tag = null; } /** * 开始解析时调用一次 */ @Override public void startDocument() throws SAXException { // TODO Auto-generated method stub super.startDocument(); } /** * 遇到开始标签就会执行 * Attributes 中存放着标签属性 */ @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { // TODO Auto-generated method stub tag = qName; for (int i = 0; i < attributes.getLength(); i++) { System.out.println(" attributes.getValue(" + i + ") = " + attributes.getValue(i)); } } /** * @param fileName */ public void parserXml(String fileName) { InputStream is = null ;//创建输入流读入XML文件 try { //创建解析器 SAXParserFactory saxfac = SAXParserFactory.newInstance(); SAXParser saxparser = saxfac.newSAXParser(); saxparser.setProperty("http://xml.org/sax/features/namespaces", true);//设置命名空间 System.out.println(fileName); is = new FileInputStream(fileName); //解析 saxparser.parse(is, new Sax()); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ if(is!=null){ try { is.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } public static void main(String [] str){ new Sax().parserXml("res/value.xml"); }}
执行后打印:
res/value.xml
attributes.getValue(0) = 1
name = 王二
age = 18
attributes.getValue(0) = 2
name = 张三
age = 20
attributes.getValue(0) = 3
name = 李四
age = 22
- 用SAX解析xml文件
- 用SAX解析xml文件
- 用SAX 解析XML文件
- xml文件解析-SAX
- sax解析xml文件
- SAX解析xml文件
- SAX解析XML文件
- SAX解析XML文件
- SAX解析XML文件
- SAX解析XML文件
- SAX解析xml文件
- SAX解析xml文件
- XML文件解析 sax
- SAX解析xml文件
- SAX解析XML文件
- SAX解析XML文件
- SAX解析XML文件
- sax 解析xml文件
- MYSQL 存储过程语法入门
- spring3.1.1集成spring security 3.1.0的maven依赖问题
- cortex-a8 S5PC100中断机制
- Android API Demos学习(2) - Save & Restore State
- HTML parser
- 用SAX解析xml文件
- Jasperreports以及iReport4.5报表PDF导出字体完美解决方案
- linux设备驱动模型
- Objective-C 编程语言官网文档(八)-快速枚举
- ruby on rails3 常见问题总结
- tomcat 中配置 access log 监控每个 http request 的处理时间
- 第16周实验报告任务2
- AsyncTask和Thread加Handler的区别
- javascript与applet之间相互通讯