当前位置: 首页 > news >正文

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 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,成为数据交换的首选格式。以下是它们的简单对比:

特性XMLJSON
可读性很好,结构清晰很好,更简洁
体积相对较大(标签冗余)相对较小(无结束标签)
解析速度相对较慢(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;和号
'&apos;单引号
"&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的核心价值在于它的严格性,这确保了数据的一致性和可解析性。

http://www.dtcms.com/a/596529.html

相关文章:

  • 开源制品管理工具Hadess,一键安装及快速入门教程
  • 【云运维】Python基础(三)
  • MyBatis-Plus 进阶实战:不用写 XML,CRUD + 复杂查询像 “点奶茶” 一样简单
  • 野狗算法详细原理,野狗算法公式,野狗算法求解目标函数极值
  • V-Ray 渲染高效优化指南
  • 商丘网站建设的公司哪家好菏泽网站建设
  • RobotFramework框架基本功能语法
  • 120. 三角形最小路径和
  • Redis(116)Redis的内存管理如何实现?
  • 如何通过中药饮片采购平台实现安全高效的全链路供应链建立?
  • 兴县做网站的公司wordpress登陆改图标和连接
  • CSV的读写
  • 【讨论】VR + 具身智能 + 人形机器人:通往现实世界的智能接口
  • android studio 里的 activity 和 layout 是怎么关联上的
  • 临桂区建设局网站北京seo做排名
  • 东阳建设局网站自适应网站建设多少钱
  • UI创作思想总结
  • 4、Python3.11新特性
  • Java-Spring入门指南(二十九)Android交互核心:按钮点击事件与Activity跳转实战
  • 云手机的两大核心技术
  • Postman VS swagger VS PostIn,接口管理工具选型指南
  • 【大数据技术05】数据加工
  • es 书籍检索-上篇
  • Electron 智能文件分析器开发实战适配鸿蒙
  • 鸿蒙文件操作
  • 手工做环保衣的网站湖北省工程建设信息官方网站
  • ShellCrash 安装与配置踩坑与解决日志
  • redis 的面试点总结
  • DS1302 简单介绍
  • JS DOM 操作与性能优化实战指南:构建高效可交互的页面结构