XML & JSON

XML 与 JSON 结构


XML(eXtensible Markup Language)

1. 定义

  • XML 是一种标记语言,用于描述数据的结构和内容。
  • 主要用于数据存储与交换。

2. 特点

  • 可扩展性:用户可以自定义标签。
  • 层次化结构:数据以树形结构组织,父子节点关系明确。
  • 可读性强:通过标签可以清楚了解数据的意义。
  • 跨平台性:与不同系统和语言兼容。

3. 基本结构

  • XML 声明:定义版本和编码方式。

    xml 复制代码
    <?xml version="1.0" encoding="UTF-8"?>
  • 根元素:每个 XML 文件有且仅有一个根元素。

    xml 复制代码
    <root>
        <!-- 子元素 -->
    </root>
  • 子元素:嵌套结构表示父子关系。

    xml 复制代码
    <root>
        <child>内容</child>
    </root>
  • 属性:为标签添加额外信息。

    xml 复制代码
    <person name="Alice" age="25"></person>
  • 注释

    xml 复制代码
    <!-- 这是一个注释 -->

4. 优缺点

  • 优点
    • 自描述性强,适合复杂数据。
    • 支持多种数据类型。
    • 有丰富的解析库支持。
  • 缺点
    • 冗余信息多,文件较大。
    • 解析速度相对较慢。

Example

xml 复制代码
<?xml version="1.0" encoding="ISO-8859-1"?>
<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文件画出结构图如下


JSON(JavaScript Object Notation)

1. 定义

  • JSON 是一种轻量级的数据交换格式。
  • 使用键值对表示数据,适合前后端数据交互。

2. 特点

  • 结构简单:以键值对和数组构成。
  • 体积小:比 XML 更紧凑。
  • 可读性强:易于理解和操作。
  • 语言无关性:与多种语言兼容。

3. 基本结构

  • 对象 (Object):用 {} 表示。

    json 复制代码
    {
        "name": "Alice",
        "age": 25
    }
  • 数组 (Array):用 [] 表示。

    json 复制代码
    [
        "apple",
        "banana",
        "cherry"
    ]
  • 键值对 :使用 key:value 格式,键为字符串。

    json 复制代码
    {
        "key": "value"
    }
  • 嵌套结构:对象和数组可以互相嵌套。

    json 复制代码
    {
        "person": {
            "name": "Alice",
            "hobbies": ["reading", "cycling"]
        }
    }
  • 注释:JSON 不支持注释。

4. 优缺点

  • 优点
    • 数据格式紧凑,解析速度快。
    • 更适合网络传输。
    • 与 JavaScript 的天然兼容性。
  • 缺点
    • 不支持注释,影响可维护性。
    • 表达复杂数据结构时不如 XML 灵活。

Example

json 复制代码
{
  "$schema": "http://json-schema.org/schema#",
  "title": "Product",
  "type": "object",
  "required": ["id", "name", "price"],
  "properties": {
    "id": {
      "type": "number",
      "description": "Product identifier"
    },
    "name": {
      "type": "string",
      "description": "Name of the product"
    },
    "price": {
      "type": "number",
      "minimum": 0
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "stock": {
      "type": "object",
      "properties": {
        "warehouse": {
          "type": "number"
        },
        "retail": {
          "type": "number"
        }
      }
    }
  }
}

XML vs JSON 对比

特性 XML JSON
可读性 标签结构易读,但冗余较多 简洁,格式紧凑
体积 文件较大,数据冗余 文件较小,数据简洁
数据类型 支持多种类型 支持基本类型与数组
层次关系 支持复杂的父子层次关系 支持嵌套,但不如 XML 清晰
解析难度 解析相对复杂 解析简单,解析库丰富
用途 数据存储、配置文件 数据交换、网络传输

总结

  1. XML 适合描述复杂的、具有层次结构的数据,常用于配置文件和文档存储。
  2. JSON 更适合高效的网络传输,是前后端通信的主流格式。
  3. 选择时应根据场景需求权衡:
    • 数据复杂性高、需兼容多系统:XML。
    • 网络传输需求高、轻量级:JSON。
相关推荐
java1234_小锋14 分钟前
MyBatis中XML映射有哪些标签?
xml·tomcat·mybatis
大腕先生1 小时前
通用分页超详细介绍(附带源代码解析&页面展示效果)
xml·java·linux·服务器·开发语言·前端·idea
wtsolutions4 小时前
Excel-to-JSON Local App - Secure Offline Excel to JSON Conversion
json·excel
Hello_Embed7 小时前
嵌入式上位机开发入门(二十九):JsonRPC TCP Server
网络·单片机·网络协议·tcp/ip·json·嵌入式
七夜zippoe1 天前
DolphinDB数据导入导出:CSV、JSON、Parquet
物联网·json·csv·parquet·dolphindb
qq_452396231 天前
第七篇:《数据驱动测试:利用Excel/JSON/CSV管理测试数据》
json·excel
sagima_sdu2 天前
Codex 使用指南(技术向):App、CLI 与工作流接入
linux·运维·语言模型·json
小糖学代码3 天前
LLM系列:1.python入门:15.JSON 数据处理与操作
开发语言·python·json·aigc
许彰午3 天前
Spring Boot + Vue 实现 XML 动态表单:固定字段 + 自由扩展方案
xml·vue.js·spring boot