• 欢迎来到本博客,希望可以y一起学习与分享

xml语法、DTD约束xml、Schema约束xml、DOM解析xml

Java benz 来源:xml语法、DTD约束xml、Schema约束xml、DOM解析xml 4年前 (2018-02-08) 116次浏览 0个评论 扫描二维码
文章目录[隐藏]

1、什么是xml、xml的作用

1.1、xml介绍

在前面学习的html语言,html是超文本标记语言,使用html语言规定好的标签来封装文本数据。而html使用的标签html语言规定好的,每个标签都有自己特定的功能。

xml语言,可扩展的标记语言,这门语言它没有定义任何的标记,而标记是由使用者自己来定义,但是由于标签名称以及属性名称都由用户自己来命名,导致别人在使用的时候很不方便。有给xml语言定义了一些约束文档,这些约束文档就专门用来约束当前这个xml中能够书写的具体的标签以及属性等信息。

1.2、xml的作用

xml作用:

  1. 1、存储和传输复杂的关系模型数据
  2. 2、作为配置文件存在,xml中主要配置的一些具有复杂的层级关系的数据,Properties文件中主要配置的一些key和value这样的数据。

在软件系统中,作为配置文件使用

为提高系统的灵活性,它所启动的模块通常由其配置文件决定

例如一个软件在启动时,它需要启动A、B两个模块,而A、B这两个模块在启动时,又分别需要A1、A2和B1、B2模块的支持,为了准确描述这种关系,此时使用XML文件最为合适不过。

2、xml的语法

2.1、文档声明

2.2、元素(标签)

2.3、属性

2.4、注释

2.5、文本和特殊字符

2.6、特殊指令

2.7、xml语法规则总结:

  1. 所有xml元素必须有闭合标签;
  2. Xml标签区分大小写;
  3. Xml必须正确地嵌套顺序;
  4. Xml文档必须有根元素(且只有一个);
  5. Xml属性值须加引号
  6. 特殊字符必须转义——CDATA;
  7. Xml中的空格、回车换行会被解析!

3、DTD约束xml

3.1、约束介绍

由于xml的标签由用户自己定义,因此在开发的时候,每个人都可以根据自己的需求来定义xml标签,这样导致项目中的xml难以维护,因此需要使用一定的规范机制来约束xml文件中的标签书写。

3.2、DTD约束快速入门

第一步:先自己定义一个xml文件

第二步:书写DTD文件来约束xml文件

DTD文件在定义的时候,扩展名就是dtd。

在xml文件中有多少个标签,就在dtd中书写多少个ELEMENT标签

3.3、DTD引入方式

3.4、DTD的语法介绍

3.4.1、元素

3.4.2、属性

3.4.3、实体

4、Schema约束xml

4.1、xml Schema介绍

Schema它也来约束xml文件的,DTD在约束xml的时候一个xml中只能引入一个DTD,同时DTD它无法对属性以及标签中的数据做数据类型的限定。
Schema它是用来代替DTD来约束xml。
Schema文件本身就是使用xml文件书写的,同时它对需要约束的xml中的数据有严格的限定。学习Schema主要来学习W3C组织定义的如何在Schema中去约束xml的标签以及属性,还有属性的数据类型,以及标签中子标签的顺序。
要定义一个Schema文件,这时它的扩展名必须是.xsd。在这个文件中根元素必须是schema。
使用Schema来约束xml,Schema在书写的时候,只需要使用W3C组织提前定义的限定标签的,以及限定的属性的那个标签即可。

4.2、Schema快速入门

第一步:书写xml文件

第二步:定义schema文件

第三步:在xml文件中引入当前的这个Schema

4.3、Schema的名称空间

在定义Schema文件的时候,需要在根标签中使用
targetNamespace 属性定义当前schema定义名称(只是一个分配的名字,根本没有指向任何文件),在被约束的xml文件中先根据这个名称引入当前的schema文件,然后在使用
xsi:schemaLocation=”” 引入具体的schema文件。(因为targetNamespace属性定义的schema名称,只是一个名称而已,所以在xml文件中需要通过schemaLocation来声明指定所遵循的Schema文件的具体位置)
(xsi:schemaLocation 使用它引入某个schema时,先要使用名称空间, 空格 ,文件名)

名称空间主要功能是用于来
elementFormDefault=”qualified|unqualified”
在schema中书写qualified ,在限定xml中的定义的标签名必须使用定义的名称空间。
unqualified 要求根元素必须使用名称空间,而子元素不能使用名称空间。

4.4、Schema中的标签解释

Book2.xsd

Name.xsd

Book2.xml

5、DOM解析xml

5.1、Java中的解析技术介绍

w3c组织在定义xml的时候,就规范了如何去解析xml文件,其中就定义了使用dom技术来解析xml文件。
DOM:Document Object Medel。文档对象模型。
w3c给出的dom解析,第一步是先把整个xml文件加载到内存,然后在内存中形成了一颗dom树。
特点:

  1. 一次将所有数据全部加载到内存中;
  2. 对xml文档中每个节点都当成一个Node对象处理。包括元素、文本、属性。
  3. 缺点就是当文档数据量很大时,对内存有占用很大,所以不适合解析大量的数据。

5.2、DOM解析

Xml文档的属性结构

DOM解析是把整个xml文档加载到内存中,然后形成一个dom树,这样就可以获取树中的所有标签,属性,文本内容。
Java实现了相应的dom解析技术:
使用Java提供的Dom技术来解析xml文件

DocumentBuilderFactory:这个是一个工厂类,主要负责生产一个解析xml的解析器对象
newDocumentBuilder()静态方法可以获取到一个用于解析xml的解析器对象
DocumentBuilderFactory.newDocumentBuilder();
获取到了DocumentBuilder对象

DocumentBuilder 这个类可以从xml中获得DOM对象
使用parse方法解析一个文件路径,就可以得到当前xml文件对象
解析xml文件首先要获取到xml文件对象即就是Document对象

5.3、DOM获取节点、属性、文本数据

5.4、修改xml中的数据

当要把修改后的xml中的数据保存到xml中需要使用Transformer 类中的transform方法

TransformerFactory这个工厂负责生产一个把dom树写到文件中的对象

Transformer 负责把一个dom写到文件中。

总结:

Java提供的dom操作方式:
第一步:需要获取到相应的工厂
第二步:根据工厂获取相应的工具或者解析器对象
第三步:根据解析器获取dom对象,再操作dom树中的节点,或者是获取到相应的工具,然后使用工具对dom树进行保存等操作


文章 xml语法、DTD约束xml、Schema约束xml、DOM解析xml 转载需要注明出处
喜欢 (0)

您必须 登录 才能发表评论!