Spring中IOC使用的XML是干什么的?具体怎么使用?

首先来说一说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 更加强大和灵活的约束语言,它具有以下几个特点:

  1. 可扩展性:XML Schema 支持用户自定义类型和元素,可以根据需要定义新的数据类型和数据元素。

  2. 强类型:XML Schema 是一种强类型语言,支持数据类型的定义和检查,能够更加准确地描述数据。

  3. 支持命名空间:XML Schema 支持命名空间,可以防止不同 XML 文档中名称相同的元素发生冲突。

  4. 提供注释和文档: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 支持三种类型的规则:

  1. 元素规则:描述元素的名字、属性和子元素,用以限制 XML 文档中元素和属性的使用范围。

  2. 实体规则:描述实体的定义和引用,用于定义 XML 文档中的命名空间和公共实体。

  3. 通用组合规则:描述整个 XML 文档的结构,包括根元素、DTD 所有规则和实体声明。

DTD 可以嵌入到 XML 文档中,也可以作为外部引用文件使用。借助 DTD,可以验证 XML 文档的格式,确保 XML 文档符合特定的标准和规则。虽然 DTD 功能比较简单,但在早期的 XML 应用系统中被广泛采用。现在,XML Schema 已经取代 DTD,成为主流的 XML 约束语言。

在 XML 中,DTD 是一种用于定义 XML 文档结构和元素的约束语言,可以嵌入到 XML 文档中或者作为外部引用文件使用。下面简单介绍一下 DTD 的实现方法:

  1. 内部 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>
  1. 外部 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)。

  1. DOM 解析:DOM 解析是将整个 XML 文档读入内存,并生成一个树形结构(Document Object Model,文档对象模型),程序可以通过访问DOM树的方法获取和修改 XML 中的数据。可以使用 javax.xml.parsers 包中的 DocumentBuilderFactory 和 DocumentBuilder 来创建 DOM 解析器,此外,还可以使用JDOM 和 DOM4J 提供的更加便捷的 API。

  2. SAX 解析:SAX 解析是一种基于事件驱动的解析方式,它对 XML 文档进行顺序扫描,当遇到 XML 元素(如开始标签、结束标签、文本节点等)时触发相应的事件,程序可以通过实现相应的处理方法(如 startElement、endElement、characters 等)来解析 XML 文件,这样可以避免将整个 XML 文件一次性读入内存,节省内存空间。可以使用 javax.xml.parsers 包中的 SAXParserFactory 和 SAXParser 来创建 SAX 解析器,或者使用 JAXB 和 XMLBeans 等第三方工具库。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值