首先来说一说XML是什么?
xml本意上就是一种用于存储和传输数据的标记语言。它具有良好的结构、可读性和扩展性,在 Web 开发中被广泛应用。
它的使用规范是
所有 XML 标签必须有一个结束标记,并且所有结束标记以“/”开头。
所有 XML 文档有且仅有一个根元素,即文档的起点和终点。
XML 标签名区分大小写。要进行正确的嵌套。
XML的元素标签<一组单词>
<a>元素标签</a>
<Student>元素标签
</Student>
XML 的元素标签中出现了其他单词,那出现 的其他单词就被称为属性标签,所有属性值必须用引号括起来。
XML 注释用“”包围起来,注释不能出现在标签内部。
文档声明
作用:文档类型很多,例如:(.html .txt .mp4),这 种情况下,我们需要告知解析者,该文档 属于什么文档类型
<?xml version="1.0" encoding="utf-8" ?> 必须要要加
在XML文档第一行
version:当前文档版本号,必须要有的属性。
因为我们不会选择1.1,只会选择1.0(属性值必须是1.0)
encoding :指定当前文档的编码。可选属性,一般都会写,且默认值是UTF-8
接下来就是xml 的约束了,这个需要我们进行了解,
首先什么xml约束?
XML 约束(XML Schema)是一种定义 XML 数据模型的语言,用来规范 XML 文档中元素和属性的结构和内容。约束可以确保 XML 文档遵循特定的格式,并且可以检查 XML 文档中的数据是否合法。
XML 约束有两种实现方式:DTD(Document Type Definition,文档类型定义)和 XML Schema。
XML Schema 是一种比 DTD 更加强大和灵活的约束语言,它具有以下几个特点:
-
可扩展性:XML Schema 支持用户自定义类型和元素,可以根据需要定义新的数据类型和数据元素。
-
强类型:XML Schema 是一种强类型语言,支持数据类型的定义和检查,能够更加准确地描述数据。
-
支持命名空间:XML Schema 支持命名空间,可以防止不同 XML 文档中名称相同的元素发生冲突。
-
提供注释和文档:XML Schema 支持添加注释和文档,可以方便地说明约束的作用和使用方法。
根据 XML Schema 进行约束时,可以定义元素的名称、数据类型、出现次数等属性,从而对 XML 文档进行限制和验证。XML Schema 的约束文件通常以 .xsd 为扩展名,可以通过工具生成,也可以手工编写。使用 XML Schema 进行约束能够提高 XML 文档的可靠性、安全性和可维护性。
引入
1:查看Schema文档,找到根元素,在XML中 写出来
<?xml version="1.0" encoding="UTF-8" ?>
<!--<!DOCTYPE 根元素 SYSTEM"文件名">-->
<students>
</students>
2:根元素来自哪个命名空间,使用XMLns指 令声明
<students xmlns="http://www.easthome.com/xml">
</students>
3:引入w3c的命名空间,复制即可
<students
xmlns="http://www.easthome.com/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>
4:引入的命名空间和哪一个xsd文件对应 使用schemaLocation指定: 两个取值 第一个是命名空间; 第二个是xsd约束文 件路径
<students
xmlns="http://www.easthome.com/xml" //此文档的默认空间
//我们写的约束文件,也受别人的约束
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
//文档中要定义的元素,来自于哪一个命名空间
targetNamespace="http://www.easthome.com/xml"
//表示xml文档中每一个元素要有命名空间的指定
elementFormDefault="qualified"
xsi:schemaLocation="http://www.easthome.com/xmlstudent.xsd"
>
DTD 的全称为文档类型定义(Document Type Definition),通常使用一系列规则描述 XML 文档结构和元素之间的层次和关系。
DTD 支持三种类型的规则:
-
元素规则:描述元素的名字、属性和子元素,用以限制 XML 文档中元素和属性的使用范围。
-
实体规则:描述实体的定义和引用,用于定义 XML 文档中的命名空间和公共实体。
-
通用组合规则:描述整个 XML 文档的结构,包括根元素、DTD 所有规则和实体声明。
DTD 可以嵌入到 XML 文档中,也可以作为外部引用文件使用。借助 DTD,可以验证 XML 文档的格式,确保 XML 文档符合特定的标准和规则。虽然 DTD 功能比较简单,但在早期的 XML 应用系统中被广泛采用。现在,XML Schema 已经取代 DTD,成为主流的 XML 约束语言。
在 XML 中,DTD 是一种用于定义 XML 文档结构和元素的约束语言,可以嵌入到 XML 文档中或者作为外部引用文件使用。下面简单介绍一下 DTD 的实现方法:
- 内部 DTD:将 DTD 嵌入到 XML 文档中,成为文档的一部分,使用时通过 <!DOCTYPE> 声明来指定 DTD 文件路径。例如:
<!DOCTYPE note [
<!ELEMENT note (to,from,header,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT header (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<note>
<to>Tove</to>
<from>Jani</from>
<header>Reminder</header>
<body>Don't forget me this weekend!</body>
</note>
- 外部 DTD:将 DTD 定义为外部文件,然后在 XML 文档中通过 <!DOCTYPE> 声明来引入 DTD,其语法如下:
<!DOCTYPE 根元素名 PUBLIC "DTD标识符" "DTD文件路径">
其中,PUBLIC 和 "DTD标识符" 用于标识 DTD 所属的组织和版本信息,而 "DTD文件路径" 则是外部 DTD 文件所在的位置。例如:
<!DOCTYPE note PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<note>
<to>Tove</to>
<from>Jani</from>
<header>Reminder</header>
<body>Don't forget me this weekend!</body>
</note>
在实现 DTD 时,需要了解 DTD 的语法规则和规范,这样才能正确地定义和使用 XML 文档的元素和属性。DTD 可以用文本编辑器来创建,也可以使用第三方工具或者在线编辑器来生成。在实际开发中,通常使用 XML 编辑器、DTD 验证工具和调试工具等来辅助完成 DTD 的开发和维护。
xml解析
在 Java 中,通常有两种 XML 解析方式:DOM(Document Object Model) 和 SAX(Simple API for XML)。
-
DOM 解析:DOM 解析是将整个 XML 文档读入内存,并生成一个树形结构(Document Object Model,文档对象模型),程序可以通过访问DOM树的方法获取和修改 XML 中的数据。可以使用 javax.xml.parsers 包中的 DocumentBuilderFactory 和 DocumentBuilder 来创建 DOM 解析器,此外,还可以使用JDOM 和 DOM4J 提供的更加便捷的 API。
-
SAX 解析:SAX 解析是一种基于事件驱动的解析方式,它对 XML 文档进行顺序扫描,当遇到 XML 元素(如开始标签、结束标签、文本节点等)时触发相应的事件,程序可以通过实现相应的处理方法(如 startElement、endElement、characters 等)来解析 XML 文件,这样可以避免将整个 XML 文件一次性读入内存,节省内存空间。可以使用 javax.xml.parsers 包中的 SAXParserFactory 和 SAXParser 来创建 SAX 解析器,或者使用 JAXB 和 XMLBeans 等第三方工具库。