首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >XML:为什么它这么啰嗦,到今天却还没被淘汰

XML:为什么它这么啰嗦,到今天却还没被淘汰

作者头像
Lihua奏
发布2026-06-23 20:31:42
发布2026-06-23 20:31:42
1860
举报

XML(Extensible Markup Language,可扩展标记语言),那什么是标记语言?

我们常见的 HTML(HyperText Markup Language,超文本标记语言),一般后缀是 ,那么 XML 一般就是 。.html.xml

标记语言,简单来说,就是通过添加标签,来给数据赋予意义。

像 HTML 里的 、、、,这些用 和 包起来的东西,都是标签,而且它们都有自己的含义。比如 表示网页标题。htmlheadtitlebody<>title

来看看 XML 为何诞生

在早期,每个软件公司都用自己的私有格式来存储数据。系统和系统之间一交换数据,经常会出现一种情况:

我发给你了,但你读不懂。

这样一来,数据交换就很麻烦。

后来,SGML 出现了,它的核心思路其实很对:

把数据的结构和内容分开,然后用“标签”来描述内容是什么。

代码语言:javascript
复制
<姓名>张三</姓名>
<年龄>25</年龄>

这样做思路很好,但 SGML 太复杂了。因为它太强了,强到很多规则都可以自己定义,什么都想兼容,结果就是学习成本高、实现成本也高。

接下来是 HTML,像这样:

代码语言:javascript
复制
<h1>标题</h1>
<p>段落</p>
<b>加粗</b>

它解决了“页面展示”的问题,但是它不擅长表达“数据本身是什么”。

代码语言:javascript
复制
<b>25</b>  <!-- 这是年龄?价格?编号? -->

所以 XML 就诞生了。

W3C(万维网联盟)意识到:互联网需要一种既简单,又能描述数据含义的语言。于是它精简了 SGML,最后得到 XML。

它的优点大致有这几个:

  • 人能方便读懂
  • 设计相对简洁
  • 能够在互联网上使用

那 XML 精炼了哪些内容

首先,XML 的最小单位叫:元素。

一个元素由三部分组成:

代码语言:javascript
复制
<姓名>张三</姓名>
开始标签 内容 结束标签

规则很简单:

开了就必须关,不然就报错。

元素的嵌套

这是 XML 很强大的地方。

代码语言:javascript
复制
<订单>
    <客户>
        <姓名>张三</姓名>
        <电话>138-0000-0000</电话>
    </客户>
    <商品>
        <名称>笔记本电脑</名称>
        <价格>8999</价格>
        <数量>1</数量>
    </商品>
</订单>

你会发现,它很像树状结构,一层包一层。

并且 XML 还有一条很重要的规则:

永远只能有一个根元素

在上面这个例子里, 就是根元素。像 、 这些,都属于它下面的子元素。<订单></订单><客户><商品>

如果你这样写:

代码语言:javascript
复制
<订单>
    <客户>
        <姓名>张三</姓名>
        <电话>138-0000-0000</电话>
    </客户>
</订单>
<商场>
...
</商场>

那就会报错,因为根元素不止一个了。

属性

属性,你可以把它理解成贴在元素上的便利贴。

代码语言:javascript
复制
<学生 学号="2024001" 性别="男">
    <姓名>张三</姓名>
</学生>

那什么时候用属性,什么时候用子元素?

你可以先这样理解:

  • 像编号、状态、类型这种短小的信息,更适合放属性
  • 像姓名、地址、正文、详情这种真正的数据内容,更适合放子元素

也就是说,属性更像“补充说明”,子元素更像“真正内容”。

XML 声明

很多 XML 文件,开头都会先写一行声明:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>

这行最常见的作用,就是说明:

  • 我是 XML
  • 我用的是什么版本
  • 我用的是什么编码

特别是编码,很重要。因为一旦编码不统一,中文就容易乱码。

XML 的基本规则

上面其实已经零散说了一些规则,这里统一总结一下:

  • 有且只有一个根元素
  • 所有标签必须关闭
  • 标签必须正确嵌套
  • 属性值必须用引号括起来
  • 标签名大小写敏感

比如嵌套这条,正确写法应该像这样:

a b b a

不能写成:

a b a b

特殊符号怎么办

那这里可能会想到一个问题:

<>&这些本身就是特殊符号,如果我内容里面也要用怎么办?

那就得用转义写法:

  • <写成&lt;
  • >写成&gt;
  • &写成&amp;
  • "写成&quot;
  • '写成&apos;

举个例子:

代码语言:javascript
复制
<公式>3 < 5 && 10 > 8</公式>   <!-- 错误 -->

<公式>3 &lt; 5 &amp;&amp; 10 &gt; 8</公式>   <!-- 正确 -->

那么 XML 一般用在哪里

像这些地方都能看到 XML:

1. Android 应用布局

代码语言:javascript
复制
<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <Button
        android:text="登录"
        android:layout_width="wrap_content"/>
</LinearLayout>

2. Java 生态中的 Spring、Maven 等等

代码语言:javascript
复制
<project>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.3.20</version>
        </dependency>
    </dependencies>
</project>

可以看出,它们都符合 XML 的规则。

那 XML 为什么到现在还没被淘汰

看到这里,很多人会想:

既然 XML 这么啰嗦,那它为什么到现在还没消失?

原因也不复杂,因为它在有些场景里,确实很好用。

比如:

  • 它结构很清楚,一层一层很好描述复杂数据
  • 它规则严格,不容易乱写
  • 它适合做配置文件、文档格式、企业系统之间的数据交换
  • 它还能配合额外规则去做数据校验

说白了:

XML 不一定轻,但它稳。

但是后来又有了 JSON

后面又衍生出了 JSON,那 JSON 为什么会出来?

先看它的结构:

代码语言:javascript
复制
{
    "姓名": "hzh",
    "年龄": 20,
    "专业": "计算机科学"
}

再对比一下 XML:

代码语言:javascript
复制
<学生>
    <姓名>张三</姓名>
    <年龄>20</年龄>
    <专业>计算机科学</专业>
</学生>

很明显,JSON 所占体积更小,写起来也更轻。

那为什么不直接全用 JSON,还要用 XML 呢?

因为它们擅长的地方不完全一样。

  • JSON 更适合数据传输,尤其适合前后端接口
  • XML 更适合描述复杂结构,也更适合那些强调规范、校验、文档化的场景

而且 JSON 也不是只有字符串和对象,它还能表示:

  • 字符串
  • 数字
  • 布尔值
  • 数组
  • 对象
  • null

所以更准确的说法不是“JSON 没有结构”,而是:

JSON 的结构更轻,XML 的结构更严格。

那什么时候用 XML,什么时候用 JSON

适合 XML 的场景

  • 配置文件
  • 文档格式
  • 强调结构层级的内容
  • 对规范和校验要求高的系统

适合 JSON 的场景

  • 前后端接口传输
  • Web 场景
  • 希望体积小一点
  • 希望前端和后端都好处理

所以不是谁彻底干掉谁,而是它们解决的问题并不完全一样。

小结

XML的核心价值,其实就一句话:

它不是为了把数据写得最短,而是为了把数据写得有结构、有含义、有规则。

所以你会发现:

  • HTML 更偏页面展示
  • JSON 更偏轻量传输
  • XML 更偏结构描述和规范表达

也正因为这样,XML 虽然看起来有点啰嗦,但到今天依然还在很多地方被使用。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-05-28,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 来看看 XML 为何诞生
  • 那 XML 精炼了哪些内容
    • 元素的嵌套
    • 属性
  • XML 声明
  • XML 的基本规则
  • 特殊符号怎么办
  • 那么 XML 一般用在哪里
    • 1. Android 应用布局
    • 2. Java 生态中的 Spring、Maven 等等
  • 那 XML 为什么到现在还没被淘汰
  • 但是后来又有了 JSON
  • 那什么时候用 XML,什么时候用 JSON
    • 适合 XML 的场景
    • 适合 JSON 的场景
  • 小结
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档