XML及使用dom4j解析XML

XML(Extensible Markup Language)表示可扩展的标记语言

XML的标签没有被预定义,也就是说不是固定的,用户可以根据自身的需求去自定义标签

XML的作用主要是用来存储数据和传输数据

   1.     存储数据是用于存储有层级关系的数据,例如省市区。在java领域XML的使用主要是作为框架的配置文件

        (1)Spring Framework application.xml

        (2)Mybatis mybatis.xml

        (3)Log4j2 log4j2.xml

2.传输数据指的是服务提供方返回个服务调用的数据传输格式,目前主流的数据传输格式是JSON

XML目前版本是1.0

XML元素组成

1.文档声明

 可以不写,但日常开发都写

必须在XML文件第一行第一列

2.元素(标签)

每个XML文件必须要有一个根标签

标签由开始标签和结束标签组成,开始标签和结束标签中间可以写标签也可以是文本字符串

标签是可以嵌套使用的,但是不能随便嵌套,必须明确层级关系

标签名必须遵守命名规则和命名规范

        (1)标签不能以数字开头

        (2)不能使用XML,Xml,xml

        (3)不能使用空格和冒号

        (4)命名区分大小写

3.属性

        (1)属性是标签的组成部分,属性只能定义在开始标签中,不能定义在结束标签中

        (2)属性的定义格式 属性名=属性值,属性值需要使用“”包含起来

        (3)开始标签中可以定义多个属性,但是多个属性的属性名不能相同

        (4)属性名和标签名一样,也要遵守命名规则和命名规范

4.注释

        注释就是对XML标签的说明

         idea中XML注释的快捷键Ctrl+/

5.转义字符

在XML中有些字符是无法识别,此时就需要使用XML的转义字符来表示

&用&来表示

<用&lt;

6.字符区

CDATA内部所有的内容都会当作文本解析,使用字符区解决在XML中有些字符无法识别的问题

IDEA中CDATA的快捷键是CD回车

 

XML约束的介绍

由于XML的标签是没有预定义,而且目前没有添加约束,在编写XML文件的时候可以添加任意的标签,这样不利于解析,在XML的技术里可以去编写一个XML约束文件来约束XML编写的规范,这杯成为XML约束

XML约束的类型有如下两种:

1.DTD约束(文件后缀名是.dtd) Java Web项目的web.xml使用的就是DTD约束

2.Schema约束(文件后缀名是.xsd)Spring Framework的application.xml使用的就是Schema约束XSD(XML Schema  Definition)

可以根据约束文件的后缀名来判断约束的类型

Schema约束比DTD约束强大

1.数据类型更加完善

2.对于元素出现的次数限制更加灵活

在日常开发中(开发业务系统),通常都不会去编写约束文件,但是我们需要根据约束文件编写符合规范的XML文件,因此对于约束文件普通的开发人员看懂即可

XML约束约束XML文件的内容

-约束XML标签的层级关系(根标签,子标签,子子标签的关系)

-约束标签(名称,类型)

-约束标签的属性(属性名,属性类型,属性约束)

XML约束-DTD约束

DTD约束的定义

数量词

+表示约束可以出现1-n个,n个表示多个

*表示元素可以出现0-n个,n表示多个

,表示元素必须按照指定的顺序出现

|表示选取其中一个

1.约束标签的层级关系

2.约束标签

 

3.约束标签的属性

 

 

 DTD约束的使用

根据DTD约束文件位置不同,使用方式有如下三种

1.外部DTD-本地DTD,DTD文档在本地磁盘路径,但是和XML文件不是在同一个文件中,DTD文档和XML文件通常是在同一个目录下

 

 

 2.外部DTD-公共DTD,DTD文件在网络上,一般都是由框架提供的,也是我们使用最多的

后续学习Java Web开发使用web.xml的时候会使用这个DTD约束文档

3.内部DTD,XML文件和DTD约束在一个XML文件中,DTD约束只会针对当前XML文件

 

 

 XML约束-Schema约束

1.Schema约束的定义

 

 

 

2.Schema约束的使用

 

或者完整写法

 

 

 

常见XML解析方法有两种

1.DOM:要求解析器将整个XML文件全部加载到内存中,生成一个Document对象

优点:元素和元素之间的结构,关系,可以针对元素进行增删查改操作

缺点:如果XML文件过大,可能会导致内存溢出

2.SAX:是一种速度更快,更加高效的解析方式,她是逐行扫描,边扫描边解析,并且以事件驱动的方式来进行具体的解析,每解析一行,都会出发一个事件。

优点:不会出现内存溢出,可以处理大文件

确定:只能读,不能写

解析器就是根据不同的解析方式提供具体的实现,为了方便开发人员来解析XML,有一些方便操作的类库。

dom4j:比较简单的XML解析的类库

jsoup:功能强大的DOM方式解析的类库,尤其对HTML解析更加方便

 获取到标签内属性后一般封装到对象中

 dom4j结合Xpath解析XML

Xpath可以使用路径表达式来选取XML文档中的元素或者属性节点,节点是沿着路径来选取的

 

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值