XML的了解

一.什么是XML

XML(eXtensible Makeup Language,可扩展标记语言),它被设计为具有自我描述性,意思是数据本身会携带关于其结构的信息。

可以把它想象成一种即能被人读懂,也能被机器解析的"数据容器"

二.核心特点

1.可扩展性

与HTML有固定的标签(如<p>,<img>等)不同,XML没有预定义标签,你可以根据自己需求定义自己的标签。

2.自我性描述

标签的名字通常描述了数据的含义

3.纯文本

XML是纯文本文件,不依赖于任何的软件或硬件,这使得它在不同的系统之间交换数据非常方便

4.平台和语言无关

无论是Windows、Linux、macOS、还是用Java,Python,C#等编程语言,都有标准的库来解析XML,这使得它成为跨平台数据交换的理想选择

三.一个简单的XML的例子

假设我们要描述一本书的信息,用XML可以这样写

XML 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<图书>
  <书名>XML从入门到精通</书名>
  <作者>张三</作者>
  <价格 货币="人民币">59.90</价格>
  <出版信息>
    <出版社>电子工业出版社</出版社>
    <出版年份>2023</出版年份>
  </出版信息>
</图书>

结构分析:

  • <?xml ... ?>XML声明,定义了XML的版本和字符编码。

  • <图书>根元素,每个XML文档必须有且只有一个根元素。

  • <书名><作者>等: 元素,是文档的基本构建块。

  • </书名>结束标签,每个开始标签必须有对应的结束标签。

  • 货币="人民币"属性,用于描述元素的额外信息。

  • <出版信息>: 嵌套的子元素,展示了数据的层次结构。


四、XML的主要用途

  1. 数据存储与传输

    • 在早期和现在的一些系统中,XML常被用作配置文件(如Java的Spring框架、服务的配置)。

    • 在网络中(尤其是Web服务,如SOAP协议),XML曾是数据交换的主要格式。

  2. 作为其他标记语言的基础

    • HTML: 用于定义网页内容。

    • RSS: 用于新闻订阅和博客摘要。

    • SVG: 用于描述矢量图形。

    • Office Open XML: Microsoft Office(.docx, .xlsx)文档的底层格式。

    • KML: Google Earth等地理信息系统使用的格式。


五、XML与JSON的对比

在现代Web开发中,JSON 已经很大程度上取代了XML,成为数据交换的首选格式。以下是它们的简单对比:

特性 XML JSON
可读性 很好,结构清晰 很好,更简洁
体积 相对较大(标签冗余) 相对较小(无结束标签)
解析速度 相对较慢(DOM解析较复杂) 相对较快(可直接转为JavaScript对象)
数据模型 树形结构,支持属性、注释等 键值对、数组,更贴近编程语言的数据结构
扩展性 强,通过Schema定义 较弱,但通常够用

为什么JSON更流行?

JSON源自JavaScript,与Web前端天生契合,解析非常简单(JSON.parse()),且格式更紧凑,这使得它在网络传输中效率更高。


六、XML相关技术

要完整地使用XML,通常会涉及到以下技术:

  • DTD: 文档类型定义,一种较早的用于定义XML文档结构的方式。

  • XSD: XML Schema Definition,比DTD更强大、更常用的XML结构定义语言,支持数据类型。

  • XPath: 一种在XML文档中查找信息的语言(类似于文件路径)。

  • XSLT: 一种用于将XML文档转换为其他格式(如HTML、PDF或其他XML)的语言。

七.总结

XML是一种强大、灵活且标准化的数据描述语言。 虽然在新项目中,JSON可能因其轻量和易用性而更受欢迎,但XML在配置文件、文档格式和企业级应用集成等领域依然占据着重要地位,是每一位开发者都应该了解的基础技术。

简单来说:

  • 想存数据或做配置? XML是个可靠的选择。

  • 想为Web API传输数据? 优先考虑JSON。

一、基本语法结构

1. XML声明(可选但推荐)

xml

复制代码
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  • version: XML版本,通常是1.0

  • encoding: 字符编码,如UTF-8、GB2312等

  • standalone: 文档是否独立("yes"或"no")

2. 元素(Elements)

元素是XML的基本构建块,由开始标签、内容和结束标签组成。

xml

复制代码
<书名>XML入门教程</书名>

空元素的两种写法:

xml

复制代码
<br></br>
<!-- 或更简洁的写法 -->
<br/>

3. 根元素(Root Element)

每个XML文档必须有且只有一个根元素,所有其他元素都嵌套在其中。

xml

复制代码
<!-- 正确示例 -->
<图书馆>
  <书>...</书>
  <书>...</书>
</图书馆>

<!-- 错误示例 -->
<书>...</书>
<书>...</书>

二、语法规则详解

1. 标签规则

  • 必须闭合:每个开始标签必须有对应的结束标签

  • 大小写敏感<Book><book> 是不同的标签

  • 正确嵌套:子元素必须完全包含在父元素内

xml

复制代码
<!-- 正确嵌套 -->
<作者>
  <姓名>张三</姓名>
</作者>

<!-- 错误嵌套 -->
<作者>
  <姓名>张三
</作者>
</姓名>

2. 属性(Attributes)

属性提供元素的额外信息,必须放在引号中。

xml

复制代码
<图书 类别="技术" 语言="中文" 版本="2.0">
  <标题>XML完全指南</标题>
</图书>

属性 vs 子元素:

xml

复制代码
<!-- 使用属性 -->
<学生 学号="2023001" 班级="三年级二班">李四</学生>

<!-- 使用子元素 -->
<学生>
  <学号>2023001</学号>
  <班级>三年级二班</班级>
  <姓名>李四</姓名>
</学生>

3. 注释

xml

复制代码
<!-- 这是一个注释 -->
<数据>
  <项目>内容</项目>  <!-- 行内注释 -->
</data>

注释不能嵌套:

xml

复制代码
<!-- 外层注释
     <!-- 内层注释 -->  这是错误的!
-->

三、特殊字符处理

XML中有5个预定义的实体引用:

字符 实体引用 说明
< &lt; 小于号
> &gt; 大于号
& &amp; 和号
' ' 单引号
" &quot; 双引号

xml

复制代码
<表达式>a &lt; b &amp;&amp; c &gt; d</表达式>
<引用>他说:&quot;Hello &apos;World&apos;&quot;</引用>

使用CDATA节

当文本中包含大量特殊字符时,使用CDATA节更方便:

xml

复制代码
<代码示例>
<![CDATA[
    if (a < b && c > d) {
        printf("Hello <World>");
    }
]]>
</代码示例>

四、命名规则

XML元素和属性名称必须遵循以下规则:

  • 可以包含字母、数字、连字符、下划线、点号

  • 不能以数字或标点符号开头

  • 不能以"xml"(任何大小写)开头

  • 不能包含空格

xml

复制代码
<!-- 合法的名称 -->
<book-title />
<图书_信息 />
<chapter1.2 />

<!-- 不合法的名称 -->
<123book />      <!-- 以数字开头 -->
<book title />   <!-- 包含空格 -->
<xml-document /> <!-- 以xml开头 -->

五、完整的XML文档示例

xml

复制代码
<?xml version="1.0" encoding="UTF-8"?>
<!-- 学生信息数据库 -->
<学生列表 创建日期="2024-01-20">
  
  <学生 学号="S001">
    <个人信息>
      <姓名>王小明</姓名>
      <性别>男</性别>
      <年龄>20</年龄>
    </个人信息>
    <成绩>
      <数学>95</数学>
      <英语>88</英语>
      <编程>92</编程>
    </成绩>
    <备注><![CDATA[该生表现优秀,在<编程竞赛>中获得一等奖]]></备注>
  </学生>
  
  <学生 学号="S002">
    <个人信息>
      <姓名>李小红</姓名>
      <性别>女</性别>
      <年龄>19</年龄>
    </个人信息>
    <成绩>
      <数学>85</数学>
      <英语>95</英语>
      <编程>90</编程>
    </成绩>
    <备注>学习努力,英语成绩突出</备注>
  </学生>

</学生列表>

六、常见错误与验证

格式良好的XML必须满足:

  1. ✅ 有且只有一个根元素

  2. ✅ 所有标签正确闭合

  3. ✅ 元素正确嵌套

  4. ✅ 属性值使用引号

  5. ✅ 特殊字符正确转义

  6. ✅ 标签名称合法

验证工具:

  • 使用浏览器的开发者工具

  • 在线XML验证器

  • 代码编辑器的XML插件(如VS Code的XML扩展)

掌握这些语法规则后,你就能创建出结构清晰、格式正确的XML文档了。记住,XML的核心价值在于它的严格性,这确保了数据的一致性和可解析性。

相关推荐
秋月的私语1 天前
批量格式化XML与JSON文件小工具
xml·json
还算善良_3 天前
XML签名
xml·java·开发语言
梅梅绵绵冰3 天前
xml方式实现AOP
xml·java·开发语言
一条晓鱼5 天前
repo xml语法
xml
萝卜白菜。6 天前
关于Java EE应用中xml解析类的问题
xml·java·java-ee
ejinxian7 天前
protobuf 、JSON、XML传输格式
xml·json·protobuf
yue0088 天前
C# XML文件的读写V2.0
xml·开发语言·c#
emma羊羊9 天前
【weblogic】XML反序列化漏洞
xml·安全
研來如此11 天前
XML与HTML
xml·html