XML的解析
来源:互联网 发布:js正则表达式匹配数字 编辑:程序博客网 时间:2024/06/17 14:42
XML的三种解析
[1]dom解析 Document Object Model 官方推荐的标准
原理:把xml文件加载到内存当中,在内存中形成一个树形结构
优点:可以进行增删改查
缺点:容易内存泄漏
[2]sax解析 Simple Api For Xml 不是官方推荐的标准 是从一个程序员社区研究出来的
原理:一边解析 一边处理 一边释放内存 实际上就是一行一行的读
优点:不会内存泄漏
缺点:不能够对数据进行增删改
API Application programming Interface应用程序接口
[3]xmlPull解析 Android中内置的解析器 这个必须会
原理:类似sax
[4]3种解析方法 只有思想 并没有提供相应的api实现
sun公司提供了一套接口Jaxp Java API For Xml processing 实现dom和sax解析
dom解析
dom解析会把xml元素 属性 文本 都当成节点
[1]javax.xml.parsers [2]DocumentBuilder 使其从 XML 文档获取 DOM 文档实例。使用此类,应用程序员可以从 XML 获取一个 Document[3]DocumentBuilderFactory 使应用程序能够从 XML 文档获取生成 DOM 对象树的解析器[4]Document XML 文档步骤:[1]获取DocumentBuilderFactory 解析器工厂[2]获取DocumentBuilder 解析器[3]解析xml文件 获取Document 整个文档对象[4]获取xml里面的内容[5]获取节点里面每次个节点对象代码:// [1]获取DocumentBuilderFactory 解析器工厂DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();// [2]获取DocumentBuilder 解析器DocumentBuilder builder = factory.newDocumentBuilder();// [3]解析xml文件 获取Document 整个文档对象Document document = builder.parse("books.xml");// [4]获取xml里面的内容NodeList nodeList = document.getElementsByTagName("title");for (int i = 0; i < nodeList.getLength(); i++) {// [5]获取节点里面每次个节点对象Node node = nodeList.item(i);System.out.println(node.getTextContent()+node.getNodeType()+node.getNodeName());
}
sax解析
步骤:[1]获取一个 SAXParserFactory 解析器工厂[2] 获取一个SAXParser 解析器[3]开始解析xml代码:// [1]获取一个 SAXParserFactory 解析器工厂SAXParserFactory factory = SAXParserFactory.newInstance();// [2] 获取一个SAXParser 解析器SAXParser parser = factory.newSAXParser();// [3]开始解析xmlparser.parse("books.xml", new DefaultHandler() {// 文档开始@Overridepublic void startDocument() throws SAXException {super.startDocument();System.out.println("startDocument");}// 元素开始@Overridepublic void startElement(String uri, String localName, String qName, Attributes attributes)throws SAXException {super.startElement(uri, localName, qName, attributes);System.out.println("startElement = " + qName);}// 文本内容@Overridepublic void characters(char[] ch, int start, int length) throws SAXException {super.characters(ch, start, length);System.out.println("characters = " + new String(ch, start, length));}// 元素结束@Overridepublic void endElement(String uri, String localName, String qName) throws SAXException {super.endElement(uri, localName, qName);System.out.println("endElement");}// 文档结束@Overridepublic void endDocument() throws SAXException {super.endDocument();System.out.println("endDocument");}});
xmlpull解析把数据封装到javaBean中
xmlPull解析 Android中内置的解析器 这个必须会
原理:类似sax与sax区别:sax强制解析所有,xmlPull解析可控,想解析哪个哪里就解析哪里事件类型: public static final int START_DOCUMENT = 0; public static final int END_DOCUMENT = 1; public static final int START_TAG = 2; public static final int END_TAG = 3; public static final int TEXT = 4;步骤[1]获取一个 XmlPullParserFactory 解析工厂[2]获取一个 XmlPullParser[3]读取xml文档[4]获取事件类型5]解析器向下移动代码:// [1]获取一个 XmlPullParserFactory 解析工厂XmlPullParserFactory factory = XmlPullParserFactory.newInstance();// [2]获取一个 XmlPullParserXmlPullParser parser = factory.newPullParser();// [3]读取xml文档parser.setInput(new FileInputStream("books.xml"), "utf-8");// [4]获取事件类型int eventType = parser.getEventType();System.out.println(eventType);// [5]解析器向下移动eventType = parser.next();System.out.println(eventType);eventType = parser.next();System.out.println(eventType);eventType = parser.next();System.out.println(eventType);解析数据:while (eventType != XmlPullParser.END_DOCUMENT) {switch (eventType) {case XmlPullParser.START_TAG:if (parser.getName().equals("book")) {book = new Book();String id = parser.getAttributeValue(0);book.setId(id);} else if (parser.getName().equals("title")) {book.setTitle(parser.nextText());} else if (parser.getName().equals("price")) {book.setPrice(parser.nextText());}break;case XmlPullParser.END_TAG:if (parser.getName().equals("book")) {books.add(book);}break;}eventType = parser.next();}
json介绍
简介:[1]JSON:JavaScript 对象表示法(JavaScript Object Notation)。[2]JSON 是存储和交换文本信息的语法。类似 XML。[3]JSON 比 XML 更小、更快,更易解析。[4]JSON 是轻量级的文本数据交换格式 [5]JSON 独立于语言 * [6]JSON 具有自我描述性,更易理解 {"name":"张三"}语法:[1]数据在名称和键值对中 名称和键值对在双引号中,名称后面写一个冒号,然后是值:{"name" : "张三"}等价于name = "张三"[2]数据由逗号分隔 [3]花括号保存对象 { "name":"张三" , "age":"18" }等价name = "张三"age = "18"[4]方括号保存数组 {"person": [{ "name":"张三" , "age":"18" },{ "name":"王五" , "age":"19" },{ "name":"李四" , "age":"20" }]}
json解析的实现
0 0
- XML的解析 DOM解析
- 解析xml的字符串
- xml的解析
- xml的解析
- XML的解析
- 微软的 XML 解析
- xml文件的解析
- 关于XML的解析
- xml的解析
- XML的解析方法
- XML的java解析- -
- 解析xml的方法
- XML的解析模型
- 解析xml的方式
- xml的解析方法
- XML的pull解析
- android的xml解析
- XML的解析
- 润乾报表一个页面中的echarts地图与其他区块的联动
- 百度地图显示指定位置,点击显示自定义内容
- 理解Aode Air,理解RIA开发
- MyBatis--索引号实现多条件查询
- hdu2033(惭愧)
- XML的解析
- plsql访问本机(win7 64位操作系统)数据库,报ORA-12514: TNS:listener does not currently.错误解决
- linux开发入门
- C#代码,查询
- CentOS7下安装MySQL5.7安装与配置(YUM)
- 使用gitbook写一本电子书,试用至少5个插件,并写成一篇技术博客
- 平时工作几条sql语句记录
- 项目部署,一个tomcat容器2个项目2个端口server.xml配置文件
- OpenCV中CvSVM部分函数解读