阅读 189

史上最全解析xml(结合springMVCxml配置文件等实例讲解)

xml是啥?开发中很常见!!

  • 1.什么是xml?

    • 2.xml约束

    • (1).DTD约束(简单,有缺陷)

    • (2)Schema约束(现在开发中经常使用)

    • 3.常见xml解析方式


1.什么是xml?

xml(Extensible Markup language) 可扩展性标记语言,就是开发者在符合xml命名规则的基础上,可以根据自己的需求定义自己的标签;

xml用处主要有以下两个:
1.配置文件,我们在学习框架时,经常使用xml配置文件;
2.用来存储数据,在网络中传输

xml和html的区别:- xml语法严格,html语法松散- xml用来存储数据,html用来展示数据- xml可以自定义标签,html是预定义标签


xml的基本语法:

1.xml的第一行必须定义为文档声明(<?xml version = ‘‘1.0’ ?’>)
2.xml文档中有且仅有一个根标签
3.属性值必须使用引号(单双都可)
4.标签必须正确关闭
5.xml标签区分大小写

2.xml约束

xml我们可以自己定义标签,如果不自己定义,就得满足一定的约束;

什么是约束:规定xml的书写规则,规定了你在xml中能够使用哪些标签和哪些属性;
一般约束文档是由开发人员提供好的,我们只需要在xml中引入约束文档即可;

格式良好的XML文档:遵循XML语法的。

有效的XML文档:遵守约束的XML文档。

注意:有效的XML文档必定是格式良好的,但良好的不一定是有效的

一下是两种常见的约束:

(1).DTD约束(简单,有缺陷)

在这里插入图片描述
举例:定义了students根标签,可以定义无数个student标签
在student标签中只能定义name,age,sex标签,且按照顺序

a、DTD(Document Type Definition):文档类型定义

作用:约束XML的书写规范
注意:dtd可以写在单独的文件中,扩展名是dtd,且必须使用UTF-8编码进行保存。

b、XML文档中如何导入DTD约束文档(XML外部)

l dtd文档在本地:

l dtd文档在网络上:

c、了解:也可以把DTD的内容直接写在XML文档内部。

写在XML文档内部,dtd没有编码要求。(了解)

DTD的主要缺陷是:不能对标签体中的数据类型进行限定,容易引发错误:

(2)Schema约束(现在开发中经常使用)

在这里插入图片描述

XML Schema 是 DTD 的继任者
我们认为 XML Schema 很快会在大部分网络应用程序中取代 DTD。

理由如下:
XML Schema 可针对未来的需求进行扩展
XML Schema 更完善,功能更强大
XML Schema 基于 XML 编写
XML Schema 支持数据类型
XML Schema 支持命名空间

XML 文档可对 DTD 或 XML Schema 进行引用。

对 DTD 的引用(DTD约束文档后缀名是.dtd)
此文件包含对 DTD 的引用:

<?xml version="1.0"?><!DOCTYPE note SYSTEM "http://www.w3school.com.cn/dtd/note.dtd"><note><to>George</to><from>John</from><heading>Reminder</heading><body>Don't forget the meeting!</body></note>


对 XML Schema 的引用(Schema约束文档后缀名是.xsd)
此文件包含对 XML Schema 的引用:

<?xml version="1.0"?><notexmlns="http://www.w3school.com.cn"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.w3school.com.cn note.xsd"><to>George</to><from>John</from><heading>Reminder</heading><body>Don't forget the meeting!</body></note>


解释:
1.需要我们填写xml文件的根标签<note>
**2.引入xsi前缀(固定写法)

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance


引入xsi前缀后,我们可以通过这个前缀来引入xsd文件;

xsi:schemaLocation="http://www.w3school.com.cn note.xsd


schemaLocation:表示文档路径note.xsd
其中http://www.w3school.com.cn叫作名称空间,它是给文档路径note.xsd起了个名字
有了这个名称空间以后,我们以后要使用note.xsd中的标签我们必须在标签前面加上名称空间,但是为了简便,我们给名称空间加了一个前缀:

xmlns="http://www.w3school.com.cn"


这里默认是空白前缀,如果我们给名称空间起了一个a前缀,那么标签就得这样写了

<?xml version="1.0"?><a:notexmlns:a="http://www.w3school.com.cn"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.w3school.com.cn note.xsd"><a:to>George</a:to><a:from>John</a:from><a:heading>Reminder</a:heading><a:body>Don't forget the meeting!</a:body></a:note>


起前缀的作用是:
如果一个xml文件被多个xsd文档约束,然而这些文档中规定了有相同的标签,这时起前缀,我们再写标签时才知道是哪一个约束文档中的;

在这里插入图片描述

再拿springMVC的配置xml配置文件来举例:
在这里插入图片描述

这里引入了3个xsd文件,然后为他们分别起了不同的名称空间
beans:使用的空白前缀,因此在写bean标签时不用写前缀;

而context和mvc文档起了相应的context,mvc前缀,因此如果想使用文档中的标签时,得加上相应的前缀

。**

3.常见xml解析方式

  • DOM解析

  • SAX解析

在这里插入图片描述

区别:
DOM.DOM4j是一次性将xml文件加载到内存,再解析;
而SAX解析属于事件驱动型,是边读边解析,因此SAX解析适用于解析大的XML文件;

原理分析:
在使用 DOM 解析 XML 文档时,需要读取整个 XML 文档,在内存中构架代表整个 DOM 树的Doucment对象,从而再对XML文档进行操作。此种情况下,如果 XML 文档特别大,就会消耗计算机的大量内存,并且容易导致内存溢出。

SAX解析允许在读取文档的时候,一行一行读取,读取一行释放一行,而不必等到整个文档装载完才会文档进行操作。

SAX采用事件处理的方式解析XML文件,利用 SAX 解析 XML 文档,涉及两个部分:解析器和事件处理器: 解析器可以使用JAXP的API创建,创建出SAX解析器后,就可以指定解析器去解析某个XML文档。 解析器采用SAX方式在解析某个XML文档时,它只要解析到XML文档的一个组成部分,都会去调用事件处理器的一个方法,解析器在调用事件处理器的方法时,会把当前解析到的xml文件内容作为方法的参数传递给事件处理器。 事件处理器由程序员编写,程序员通过事件处理器中方法的参数,就可以很轻松地得到sax解析器解析到的数据,从而可以决定如何对数据进行处理

xml常见解析器:
在这里插入图片描述

现在用的最多的是DOM4j;使用DOM4j需要导入Dom4j.jar包


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐