XML引入,DOM 方式解析XML 原理,SAX 方式解析XML

XML 简介

Xml(eXtensible Markup Language) 即可扩展标记语言。
提供了一套跨平台、跨网络、跨程序的语言的数据描述方式,使用XML 可以方便地实现数据交换、系统配置、
内容管理等常见功能。

元素VS 节点

节点包括元素节点、属性节点、文本节点;
元素一定是节点,但是节点不一定是元素;

<?xml version="1.0" encoding="UTF-8"?>
<emp>
	<empName empNo="10050">Allen</empName>
	<job>办事员</job>
	<addr>波士顿</addr>
</emp>

  DOM 方式解析XML 原理

基于DOM(Document Object Model,文档对象模型)解析方式,是把整个XML 文档加载到内存,转化成
DOM 树,因此应用程序可以随机的访问DOM 树的任何数据;
优点:灵活性强,速度快;
缺点:消耗资源比较多;

  DOM 方式解析XML 示例

<?xml version="1.0" encoding="UTF-8"?>
<emps>
<emp>
	<empName empNo="10050">Allen</empName>
	<job>办事员</job>
	<addr>波士顿</addr>
</emp>
<emp>
	<empName empNo="10060">Smith</empName>
	<job>销售员</job>
	<addr>纽约</addr>
</emp>
<emp>
	<empName empNo="10070">James</empName>
	<job>技术员</job>
	<addr>北京</addr>
</emp>
</emps>

  

package com.zhiqi.test;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class DOM {

	public static void printNodeAttr(Node node){
		NamedNodeMap namedNodeMap=node.getAttributes();
		for(int i=0;i<namedNodeMap.getLength();i++){
			Node attrNode=namedNodeMap.item(i);
			System.out.println(attrNode.getNodeName()+":"+attrNode.getFirstChild().getNodeValue());
		}
	}

	public static void main(String[] args) {
		DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
		try {
			DocumentBuilder builder=factory.newDocumentBuilder();
			Document doc=builder.parse("src/emp.xml");
			NodeList nodeList=doc.getElementsByTagName("emps");
			Element element=(Element)nodeList.item(0);
			NodeList studentsNodeList=element.getElementsByTagName("emp");
			for(int i=0;i<studentsNodeList.getLength();i++){
				Element e=(Element)studentsNodeList.item(i);
				System.out.println("姓名:"+e.getElementsByTagName("empName").item(0).getFirstChild().getNodeValue());
				printNodeAttr(e.getElementsByTagName("empName").item(0));
				System.out.println("职位:"+e.getElementsByTagName("job").item(0).getFirstChild().getNodeValue());
				System.out.println("地址:"+e.getElementsByTagName("addr").item(0).getFirstChild().getNodeValue());
				System.out.println("================");
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

  SAX 方式解析XML

时间: 2024-12-26 14:45:42

XML引入,DOM 方式解析XML 原理,SAX 方式解析XML的相关文章

XML数据解析(元素属性) SAX方式NSParser代理

本文使用的XML文档格式 SAX解析XML数据是一行一行的解析,与DOM方式将整个文档加入内存解析方式不同, SAX解析使用NSParser(apple自带框架)DOM依靠GData(谷歌开发) SAX解析数据原理:事件驱动,每发现一个元素就通知代理,在代理方法中将发现的元素封装存储到字典中,我们通过遍历字典拿到发现的每个元素,模型化后存放在数据源数组中 下面给出这个XML文档的SAX解析代码,其余部分代码与前面几篇文章相同 SAX解析常用的代理方法:(都是代理方法,解析器发现一个数据就通知对应

XML编程总结(三)——使用SAX接口操作xml

(三)使用SAX接口操作xml SAX解析器被称为SAXParser,SAXParser是由javax.xml.parsers.SAXParserFactory创建的.与DOM解析器不同,SAX解析器并不创建XML文档的内存表示,因此会占用更少的内存.SAX解析器通过调用回调方法(事件驱动)将XML文档结构通知客户端,也就是通过调用提供给SAXParser的org.xml.sax.helpers.DefaultHandler处理器内的方法. org.xml.sax.helpers.Default

iOS开发中XML的DOM和SAX解析方法

一.介绍 dom是w3c指定的一套规范标准,核心是按树形结构处理数据,dom解析器读入xml文件并在内存中建立一个结构一模一样的“树”,这树各节点和xml各标记对应,通过操纵此“树”来处理xml中的文件.xml文件很大时,建立的“树”也会大,所以会大量占用内存. sax解析器核心是事件处理机制.例如解析器发现一个标记的开始标记时,将所发现的数据会封装为一个标记开始事件,并把这个报告给事件处理器,事件处理器再调用方法(startElement)处理发现的数据.下面我们尝试一下SAX和DOM解析:

mybatis 解析配置文件(一)之XML的DOM解析方式

简介 在之前的文章<mybatis 初步使用(IDEA的Maven项目, 超详细)>中, 讲解了mybatis的初步使用, 并总结了以下mybatis的执行流程: 通过 Resources 工具类读取 mybatis-config.xml, 存入 Reader: SqlSessionFactoryBuilder使用上一步获得的reader创建SqlSessionFactory对象; 通过 sqlSessionFactory 对象获得SqlSession; SqlSession对象通过selec

006_03Java解析XML之DOM方式与SAX方式

XML解析方式分为两种:DOM方式和SAX方式 DOM:Document Object Model,文档对象模型.这种方式是W3C推荐的处理XML的一种方式. SAX:Simple API for XML.这种方式不是官方标准,属于开源社区XML-DEV,几乎所有的XML解析器都支持它. XML解析开发包 JAXP:是SUN公司推出的解析标准实现. Dom4J:是开源组织推出的解析开发包. JDom:是开源组织推出的解析开发包. JAXP: JAXP:(Java API for XML Proc

XML解析的三种方式(dom,sax,dom4j)

1.Dom解析: 要解析的xml文件内容: <?xml version="1.0" encoding="utf-8" standalone="no"?><class> <stu id="1"> <name>小灰灰</name> <age>23</age> <insto>好学生</insto> </stu> &

JAVA解析XML之SAX方式

JAVA解析XML之SAX方式 SAX解析xml步骤 通过SAXParseFactory的静态newInstance()方法获取SAXParserFactory实例factory 通过SAXParserFactory实例的newSAXParser()方法返回SAXParser实例parser 创建一个类继承DefaultHandle,重写方法进行业务处理并创建这个类的实例handle 重写DefaultHandle类的方法 startElement方法用来遍历xml文件的开始标签; endEle

SAX方式解析XML文件的方法分析

SAX(Simple API for XML)SAX的工作原理简单地说就是对文档进行顺序扫描,当扫描到文档(document)开始与结束.元素(element)开始与结束.文档(document)结束等地方时通知事件处理方法,由事件处理函数做相应动作,然后继续同样的扫描,直至文档结束.SAX解析方式适用于大型文档,因为他的解析是逐行进行不用像DOM中那样为所有节点创建对象,这样效率大大提高,所以虽然它不是W3C标准,但它却得到了广泛认可. 这是一个需要解析的XML文件: <?xml versio

Android系列之网络(四)----SAX方式解析XML数据

?[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4044170.html 联系方式:[email protected] [系列]Android系列之网络:(持续更新) Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据) Android系列之网络(二)----HTTP请求头与响应头 Androi