01.XML
XML
1.XML大纲
- XML入门
- XML解析
- XPath
2.XML入门
XML概述
XML是可扩展标记语言(Extensible Markup Language)的缩写,它是一种数据表示格式,可以描述非常复杂的数据结构,常用于传输和存储数据,
XML的特点
- 纯文本,默认使用UTF-8编码
- 可嵌套
- XML内容存为文件,那么它就是一个XML文件
XML的使用场景
- XML内容经常被当成消息进行网络传输
- 作为配置文件用于存储系统或框架的信息
XML 和 HTML 之间的差异
- XML 不是 HTML 的替代
- XML 和 HTML 为不同的目的而设计:
- XML 被设计用来传输和存储数据,其焦点是数据的内容
- HTML 被设计用来显示数据,其焦点是数据的外观
XML文件的创建
就是创建一个文件名后缀是xml的文件
XML语法规则
文档声明必须是第一行
<?xml version="1.0" encoding="UTF-8" ?>
树形结构
XML 文档形成了一种树结构,它从"根部"开始,然后扩展到"枝叶"
XML文档必须有根元素
XML 文档必须包含根元素。该元素是所有其他元素的父元素
<root>
<child>
<subchild>.....</subchild>
</child>
</root>
所有的XML元素都必须有一个关闭标签
<p>This is a paragraph.</p>
<br />
XML标签对大小写敏感
必须使用相同的大小写来编写打开标签和关闭标签
<Message>这是错误的</message>
<message>这是正确的</message>
XML必须正确嵌套
<b><i>This text is bold and italic</i></b>
XML属性值必须加引号
在 XML 中,XML 的属性值必须加引号
<note date="12/11/2007">
<to>Tove</to>
<from>Jani</from>
</note>
实体引用
在 XML 中,一些字符拥有特殊的意义。
如果您把字符 "<" 放在 XML 元素中,会发生错误,这是因为解析器会把它当作新元素的开始。
这样会产生 XML 错误,正确的方式如下:
使用<来代替<符号
<message>if salary < 1000 then</message>
XML5个预定义的实体引用
符号 | 预定义 |
---|---|
> | > |
< | < |
& | & |
' | ' |
" | " |
XML中的注释
<!-- 注释内容 -->
在XML中空格会被保留
XML以LF存储换行
XML元素
什么是XML元素
XML元素指的是从(且包括)开始标签直到(且包括)结束标签的部分
一个元素包含的部分
- 其他元素
- 文本内容
- 属性
- 以上全部
XML元素命名规则
- 名称可以包含字母、数字以及其他的字符
- 名称不能以数字或者标点符号开始
- 名称不能以字母xml(或者 XML、Xml 等等)开始
- 名称不能包含空格
XML属性
什么是XML属性
元素可以有属性,提供有关元素的额外信息
属性示例
type是属性的名称,gif是属性的内容
<file type="gif">computer.gif</file>
XML属性必须加引号
属性值必须被引号包围,不过单引号和双引号均可使用
XML内容完整示例
<bookstore>
<book category="COOKING">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
XML文档约束
为什么需要文档约束
由于XML文件可以自定义标签,导致XML文件可以随意定义,程序在解析的时候可能出现问题
什么是XML文档约束
是用来限定xml文件中的标签以及属性应该怎么写,以此强制约束程序员必须按照文档约束的规定来编写xml文件
文档约束的分类
- DTD
- schema
DTD
一个文件后缀名为.dtd的文件,里面写了一些内容,xml可以通过这些内容判断出来可以写哪些内容和属性,由于语法比较复杂在这里就举一个示例
<!DOCTYPE note
[
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<?xml version="1.0" encoding="UTF-8" ?>
<!--在XML导入DTD约束文件-->
<!DOCTYPE 书架 SYSTEM "data.dtd">
schema约束
- schema可以约束具体的数据类型,约束能力上更强大
- schema本身也是一个xml文件,本身也受到其他约束文件的要求,所以编写的更加严谨
- 示例如下
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<?xml version="1.0" encoding="UTF-8" ?>
<!--在XML导入xsd约束文件-->
3.XML解析
什么是XML解析
使用程序读取XML中的数据
两种解析方式
- SAX解析: 一行一行解析,适合解析大文件
- DOM解析: 把整个文件加载到内存中,把XML当成一棵树来解析
DOM常见的解析工具
名称 | 说明 |
---|---|
JAXP | SUN公司提供的一套XML的解析的API |
JDOM | JDOM是一个开源项目,它基于树型结构,利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作 |
dmo4j | 是JDOM的升级品,用来读写XML文件的。具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术,同时它也是一个开放源代码的软件,Hibernate也用它来读写配置文件 |
jsoup | 功能强大DOM方式的XML解析开发包,尤其对HTML解析更加方便 |
4.XPath
为什么需要XPath
如果需要从XML文件中检索需要的某个信息,使用传统方式如DOM或SAX很麻烦,所以有了XPath
什么是XPath
- XPath在解析XML文档方面提供了一独树一帜的路径思想,更加优雅,高效
- XPath使用路径表达式来定位XML文档中的元素节点或属性节点
- XPath依赖于Dom4j技术实现的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南