概述
XML
一、XML概念和作用
1.XML概念
XML的全称为(eXtensible Markup Language),是一种可扩展的标记语言。
- 标记语言:通过标签来描述数据的一门语言
- 可扩展:标签的名字是可以自定义的
<person id=“1” color=“yellow”>
<name>武松</name>
<age>18</age>
<email>panpan@163.com</email>
</person>
- XML的作用(存储和传输数据)
- 不同软件之间进行数据传输。
- 各种框架的配置文件。
2.XML组成
- XML文件的后缀名为:xml
- 文档声明必须是XML第一行
<?xml version="1.0" encoding="UTF-8" ?>
version:版本号,该属性是必须存在的
encoding:文件编码,该属性不是必须的(一般取值都是UTF-8)
-
文档声明的作用
告诉别人这个一个XML文件 -
XML组成-标签和属性
- 标签由一对尖括号和合法标识符组成
- 标签必须成对出现(开始标签和结束标签)
- 没有内容的标签可以提前结束,如
<address/>
- 标签中可以定义属性,属性和标签名空格隔开
<student id="1"></student>
- 属性值必须用引号引起来
-
标签需要正确的嵌套
- XML组成-根标签
- 没有被其他标签包裹的就称为根标签
- 在一个XML文档中,只允许有一个根标签
-
XML组成-注释
- 注释语法格式:
- 注释作用: 给程序员看的
- 快捷键:
ctrl + /
- 嵌套:在XML中注释不能嵌套
-
XML组成-实体字符/转义字符
因为很多符号已经被XML所使用,所以在元素体或属性值中想使用这些符号就必须使用实体字符
- 规律所有的实体字符都是以&开头, 以
;
结尾
&xxx
-
XML组成-字符数据区
-
如果大量使用实体字符,会导致XML可读性降低。另一种解决方案:可以使用字符数据区包裹这些字符。
-
CDATA字符数据区的作用
放在CDATA字符数据区中的数据,作为纯文本解析,原样显示。
-
快捷键:CD
-
3.小结:
XML的组成格式要求是什么样的:
- 文件后缀必须是xml
- 文档声明必须是第一行
- 必须存在一个根标签,有且只能有一个
- XML文件中可以定义注释信息:
- 标签必须成对出现,有开始,有结束标签:
<name></name>
- 必须能够正确的嵌套
二、导入DTD约束
1.XML约束介绍
因为XML文件的标签和属性可以随意扩展,通过XML约束来限定XML文件中可使用的标签以及属性。
2.XML的两种约束
- DTD约束,比较简单,功能相对弱
- Schema,比较复杂,功能相对强
在企业实际开发中,DTD约束文档是现成的,我们只需引入DTD约束文档,编写出相应的XML文档。
导入DTD文件的两种格式 | 说明 |
---|---|
<!DOCTYPE 根元素SYSTEM "DTD 文件路径">` | 本地的约束,适合个人,公司小范围的使用的约束 |
<!DOCTYPE 根元素 PUBLIC "文件描述" "DTD文件路径"> | 网络上的约束,适合大范围的使用 |
3.DTD的不足
- 不能验证数据类型
- 因为DTD是一个文本文件,本身不能验证是否正确。
4.Schema约束介绍
- Schema 功能更强大,数据类型约束更完善
- Schema文件本身也是XML文件
- 一个XML中可以引用多个Schema约束文件
- Schema约束文件扩展名:xsd
- Schema约束导入格式
<根标签
xmlns="命名空间"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="命名空间 schema约束文件名">
<!-- 编写XML元素 -->
</根标签>
- Schema命名空间查看
三、XML解析介绍
-
什么是XML的解析: 使用程序读取XML中的数据
-
两种解析方式:SAX解析 ,DOM解析
- DOM解析原理
一次性读取XML中的所有数据,在内存中形成一颗DOM树
- 常见的解析工具介绍
使用Java基础所学的IO知识是可以完成XML解析的,不过要非常繁琐的操作才可以完成,且开发中会遇到不同问题(只读、读写)。人们为不同问题提供不同的解析方式,使用不同的解析器进行解析,方便开发人员操作XML。
名称 | 说明 |
---|---|
JAXP | SUN公司提供的一套XML的解析的API。 |
JDOM | JDOM是一个开源项目,它基于树型结构,利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作。 |
dom4j | 是JDOM的升级品,用来读写XML文件的。具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom 技术,同时它也是一个开放源代码的软件,Hibernate也用它来读写配置文件。 |
jsoup | 功能强大DOM方式的XML解析开发包,尤其对HTML解析更加方便。 |
1.Dom4j解析XML-得到Document对象
- SAXReader对象
方法名 | 说明 |
---|---|
SAXReader() | 创建解析器 |
Document read(String url) | 加载执行XML文档 |
- Document对象
方法名 | 说明 |
---|---|
Element getRootElement() | 获得根元素 |
2.Element介绍
Element表示XML中的元素对象
方法名 | 说明 |
---|---|
List elements() | 得到当前元素下所有子元素 |
List elements(String name) | 得到当前元素下指定名字的子元素返回集合 |
Element element(String name) | 得到当前元素下指定名字的子元素,如果有很多名字相同的返回第一个 |
String getName() | 得到元素名字 |
String attributeValue(String name) | 通过属性名直接得到属性值 |
String elementText(子元素名) | 得到指定名称的子元素的文本 |
String getText() | 得到文本 |
3.XPath介绍
XPath使用路径表达式来选取XML文档中的元素节点或属性节点。节点是通过沿着路径 (path) 来选取的。XPath在
解析XML文档方面提供了一独树一帜的路径思想。
/元素/子元素/孙元素
-
XPath使用步骤
①导入jar包(dom4j和jaxen-1.1.2.jar)
②通过dom4j的SAXReader获取Document对象③利用XPath提供的API,结合XPath的语法完成选取XML文档元素节点进行解析操作。
-
Document中和XPath相关API
方法名 | 说明 |
---|---|
Node selectSingleNode(“表达式”) | 获取符合表达式的唯一元素 |
List selectNodes(“表达式”) | 获取符合表达式的元素集合 |
- XPath:绝对路径
采用绝对路径获取从根节点开始逐层的查找/contactList/contact/name节点列表并打印信息
- 解析 XML 文档并获得Document对象
- 定义 XPath 表达式:/contactList/contact/name
- 调用Document对象的selectNodes()方法执行XPath获得节点集合
- 遍历输出每个节点
方法名 | 说明 |
---|---|
/根元素/子元素/孙元素 | 从根元素开始,一级一级向下查找,不能跨级 |
- XPath:相对路径
- 获得根节点对象
- 定义 XPath 表达式:./contact/name
- 调用Document对象的selectNodes()方法执行XPath获得节点
- 打印输出所有的节点
方法名 | 说明 |
---|---|
./子元素/孙元素 | 从当前元素开始,一级一级向下查找,不能跨级 |
- XPath:全文搜索
需求: 直接全文搜索所有的name元素并打印
- 创建XPath表达式 //name
- 调用Document对象的selectNodes()方法执行XPath获得节点
方法名 | 说明 |
---|---|
//contact | 找contact元素,无论元素在哪里 |
//contact/name | 找contact,无论在哪一级,但name一定是contact的子节点 |
//contact//name | contact无论在哪一种,name只要是contact的子孙元素都可以找到 |
- XPath:属性查找
- 创建XPath表达式: //@id
- 调用Document对象的selectNodes()方法执行XPath获得节点
- **创建XPath表达式: //contact[@id] **
- 调用Document对象的selectNodes()方法执行XPath获得节点
方法名 | 说明 |
---|---|
//@属性名 | 查找属性对象,无论是哪个元素,只要有这个属性即可。 |
//元素[@属性名] | 查找元素对象,全文搜索指定元素名和属性名。 |
//元素[@属性名=‘值’] | 查找元素对象,全文搜索指定元素名和属性名,并且属性值相等。 |
最后
以上就是着急棒球为你收集整理的xml复习笔记:xml、xml的解析的全部内容,希望文章能够帮你解决xml复习笔记:xml、xml的解析所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复