XML基础
文章目录
- 一、XML是什么
- 二、XML的组成部分
- 三、XML的作用
- 四、XML语法规则
- 五、DTD
-
- 1.内部引用
- 2.外部引用
- 六、DTD实体
-
- 1.内部实体
- 2.外部实体w
一、XML是什么
XML(Extensible Markup Language,可扩展标记语言)是一种用于存储和传输数据的标记语言,于1998年由W3C(万维网联盟)推出。它不预设标签,允许用户根据需求自定义标记,因此具有极强的可扩展性。
与HTML(超文本标记语言)不同,XML的核心作用是描述数据的结构和含义,而非定义数据的显示方式。例如,一份XML文件可以清晰记录订单信息的层级关系(如订单号、客户信息、商品列表等),且这些数据能被不同系统统一解析。
二、XML的组成部分
XML文件的基本组成包括以下元素:
- 声明:位于文件开头,用于指定XML版本和编码格式,例如
。
- 元素:由开始标签、内容和结束标签组成,是XML的基本单位,例如
XML教程
。元素可嵌套,形成层级结构。 - 属性:用于为元素提供额外信息,位于开始标签中,格式为
属性名=\"属性值\"
,例如XML教程
。 - 实体:用于表示特殊字符或重复内容的引用,例如
&
代表&
(与号)。 - 注释:以
<!--
开头、-->
结尾,用于解释代码,不影响XML的解析,例如。
三、XML的作用
- 数据存储:XML采用结构化格式,适合存储配置文件(如软件的配置参数)、数据记录(如日志、订单)等,便于人类阅读和机器解析。
- 数据传输:在不同系统(如客户端与服务器、不同编程语言的应用)之间传输数据时,XML作为通用格式可避免因数据格式不兼容导致的问题。
- 数据交换:在跨平台、跨系统的场景中(如电子商务平台与支付系统对接),XML可作为标准化的数据交换格式,确保信息准确传递。
- 配置文件:许多软件(如Java Web框架、数据库)使用XML作为配置文件,通过标签层级清晰定义系统参数。
四、XML语法规则
XML有严格的语法规范,违反规则会导致解析错误,核心规则包括:
- 必须有声明:文件开头需包含XML版本声明(如
),编码格式可选。
- 单一根元素:整个XML文件必须有且仅有一个根元素,所有其他元素都嵌套在根元素内。例如:
<library> <book>XML教程</book></library>
- 标签成对闭合:所有元素必须有开始标签和结束标签,空元素可简写为
(如
)。
- 标签区分大小写:
和
被视为不同标签。
- 属性值加引号:属性值必须用单引号或双引号包裹,例如
。
- 特殊字符用实体:
<
、>
、&
等特殊字符需用实体引用(如<
代表<
),避免被解析为标签。
五、DTD
DTD(Document Type Definition,文档类型定义)是XML的一种约束机制,用于定义XML文档的结构(如允许的元素、属性、嵌套关系等),确保XML文件符合预设的格式规范。
1.内部引用
内部DTD直接定义在XML文件内部,仅对当前文件生效。
-
格式:
在XML声明之后、根元素之前,用定义。
-
示例:
<!DOCTYPE library [ <!ELEMENT library (book+)> <!ELEMENT book (title, author)> <!ELEMENT title (#PCDATA)> <!ELEMENT author (#PCDATA)> ]><library> <book> <title>XML教程</title> <author>张三</author> </book></library>
2.外部引用
外部DTD定义在独立的文件中(通常以 .dtd
为扩展名),可被多个XML文件共享引用。
-
格式:
引用本地外部DTD:
引用公共外部DTD(由权威机构定义): -
示例:
假设存在library.dtd
文件,内容为:则XML文件可引用该外部DTD:
<!DOCTYPE library SYSTEM \"library.dtd\"> <library> <book> <title>XML教程</title> <author>张三</author> </book></library>
六、DTD实体
实体是DTD中用于定义可重复使用的内容或引用外部资源的机制,类似“变量”,使用时通过 &实体名;
引用。
1.内部实体
内部实体在DTD中直接定义内容,仅在当前DTD范围内有效。
-
格式:
-
示例:
<!DOCTYPE user [ <!ENTITY username \"Alice\"> <!ELEMENT user (name)> <!ELEMENT name (#PCDATA)>]><user> <name>&username;</name> <!-- 引用实体,解析后为Alice --></user>
2.外部实体w
外部实体引用外部文件的内容,可分为本地外部实体(引用本地文件)和远程外部实体(引用网络资源)。
-
格式:
本地外部实体:
远程外部实体: -
示例:
-
引用本地文件(如
data.txt
内容为“Hello XML”):<!DOCTYPE note [ <!ELEMENT note (#PCDATA)>]><note>&content;</note> <!-- 解析后为Hello XML -->
-
引用远程资源(如
http://example.com/info.txt
内容为“远程数据”):<!DOCTYPE info [ <!ELEMENT info (#PCDATA)>]><info>&remote;</info> <!-- 解析后为远程数据 -->
注意:外部实体可能存在安全风险(如XXE漏洞),攻击者可通过构造恶意外部实体读取服务器敏感文件,因此实际应用中需谨慎配置XML解析器,限制外部实体的使用。
-