XML简介以及XML的解析
发布时间:2020-12-16 09:35:48 所属栏目:百科 来源:网络整理
导读:?? 一、XML的概述(了解) * eXtensible Markup Language 可扩展标记语言 * 宗旨是传输数据,而非显示数据。 * XML标签没有被预定义,需要用户自行定义标签。 * XML技术是W3C组织(WorldWideWeConsortium万维网联盟)发布的,目前遵循的是W3C组织于2000年发布的X
??
一、XML的概述(了解)
* eXtensible Markup Language 可扩展标记语言 * 宗旨是传输数据,而非显示数据。 * XML标签没有被预定义,需要用户自行定义标签。 * XML技术是W3C组织(WorldWideWeConsortium万维网联盟)发布的,目前遵循的是W3C组织于2000年发布的XML1.0规范。 * 作用: a. 传输数据 b. 配置文件(主要用途) 二、XML的语法(掌握) * <?xml version=“1.0”?> 文档声明必须出现在第一句 * 一个标签有如下两种书写形式: 包含标签主体:<mytag>some content</mytag> 不含标签主体:<mytag/> * 一个XML文档必须有且仅有一个根标签 * XML中不会忽略主体内容中出现的空格和换行。 * 严格区分大小写 * <!--这是注释--> * CDATA : 把标签当做普通文本内容; <![CDATA[ <itcast>www.itcast.cn</itcast> ]]> *XML编码原理: 三、XML的约束(看懂即可,掌握引入外部约束文件的语句) * DTD *分类: 格式良好的XML:遵循XML语法的XML 有效的XML:遵循约束文档的XML 约束文档定义了在XML中允许出现的元素名称、属性及元素出现的顺序等等。 注意:dtd文档必须用utf-8编码格式保存 * 校验XML的有效性 * 非校验解析器 参见validator.html * 校验解析器 * DTD 文件的引入: 当引用的DTD文档在本地时,采用如下方式:<!DOCTYPE 根元素 SYSTEM “DTD文档路径”> 当引用的DTD文档在公共网络上时,采用如下方式: <!DOCTYPE 根元素 PUBLIC “DTD名称” “DTD文档的URL”> eg : <!DOCTYPE web-app PUBLIC "-//Sun Microsystems,Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> * DTD文件的语法 在DTD文档中使用ELEMENT关键字来声明一个XML元素。 如果子元素用逗号分开,说明必须按照声明顺序去编写XML文档。 如果子元素用“|”分开,说明任选其一 用+、*、?来表示元素出现的次数 定义属性: <!ATTLIST 元素名 属性名1 属性值类型 设置说明 属性名2 属性值类型 设置说明> * Schema(难) 四、XML的解析(掌握) * 解析的方式 * DOM 解析 : Document Object Model ,文档对象模型。这种方式是 W3C 推荐的处理 XML 的一种方式。 * SAX 解析 : Simple API for XML。这种方式不是官方标准,属于开源社区XML-DEV,几乎所有的XML解析器都支持它。 两种解析方式的区别:1.DOM解析一次性将xml文件加载进入内存,形成dom树,这样的缺点是xml文件较大时,占用内存很大,容易发生内存溢出的状况
2.SAX解析式一种边加载边解析的方式,占用系统资源少。但是缺点是只能对xml文件进行加载读取查询,不能进行增删改的操作。
* 解析包
* JAXP (sun 公司提供): (Java API for XML Processing) 开发包是 JavaSE 的一部分
DOM方式:
使用JAXP进行DOM解析的过程图解:
DOM方式解析步骤:
1.调用 DocumentBuilderFactory.newInstance() 方法得到创建 DOM 解析器的工厂
2.调用工厂对象的 newDocumentBuilder方法得到 DOM 解析器对象
3.调用DOM解析器对象的parse()方法解析XML文档,得到代表整个文档的Document对象,利用DOM特性对整个XML文档进行操作
如果需要重新保存修改后的数据到xml,则要涉及到xml写入硬盘:使用到了Transformer类的transform方法:
//把内存中修改后的dom树重新写入硬盘
Transformer tf = TransformerFactory.newInstance().newTransformer();
tf.transform(
new
DOMSource(document),
new
StreamResult(
"src/book.xml"
));
Transformer类简介:
此抽象类的实例能够将源树转换为结果树。 使用此实例处理来自不同源的 XML,并将转换输出写入各种接收器。
通过
SAX方式解析
SAX解析步骤:
* DOM4j (第三方)
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |