当前位置:网站首页>文字编码 - XML 教程
文字编码 - XML 教程
2022-08-04 13:10:00 【为为为什么】
XML 指可扩展标记语言,被设计用来传输和存储数据。本文记录XML基础知识。 教程参考w3school。
简介
- XML 指可扩展标记语言(EXtensible Markup Language)
- XML 是一种标记语言,很类似 HTML
- XML 的设计宗旨是传输数据,而非显示数据
- XML 标签没有被预定义。您需要自行定义标签
- XML 被设计为具有自我描述性。
- XML 是 W3C 的推荐标准
- XML 是没有任何行为的纯文本,仅编码保存数据
用途
- XML 把数据从 HTML 分离
- XML 简化数据共享
- XML 简化数据传输
- XML 简化平台的变更
XML 树结构
XML 文档形成了一种树结构,它从“根部”开始,然后扩展到“枝叶”。
- XML 文档必须包含根元素。该元素是所有其他元素的父元素
- XML 文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端
- 所有元素均可拥有子元素
实例
<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 元素都须有关闭标签(声明不是XML元素,恰好他又不需要关闭)
- XML 标签对大小写敏感,必须使用相同的大小写来编写打开标签和关闭标签:
<Message>这是错误的。</message>
<message>这是正确的。</message>
- XML 必须正确地嵌套
<b><i>错误嵌套</b></i>
<b><i>正确嵌套</i></b>
- XML 文档必须有根元素
XML 文档必须有一个元素是所有其他元素的父元素。该元素称为根元素。
<root>
<child>
<subchild>.....</subchild>
</child>
</root>
- XML 的属性值须加引号
<note date=08/08/2008> <!-- 错误属性 -->
<note date="08/08/2008"> <!-- 正确属性 -->
<to>George</to>
<from>John</from>
</note>
- 实体引用
在 XML 中,有 5 个预定义的实体引用:
< | < | 小于 |
---|---|---|
> | > | 大于 |
& | & | 和号 |
' | ’ | 单引号 |
" | " | 引号 |
- 注释
语法与 HTML 的语法很相似:
<!-- This is a comment -->
- 在 XML 中,空格会被保留
- XML 以 LF 存储换行
在 Windows 应用程序中,换行通常以一对字符来存储:回车符 (CR) 和换行符 (LF)。这对字符与打字机设置新行的动作有相似之处。在 Unix 应用程序中,新行以 LF 字符存储。而 Macintosh 应用程序使用 CR 来存储新行。
XML 元素
XML 元素
XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。 元素可包含其他元素、文本或者两者的混合物。元素也可以拥有属性。
<bookstore>
<book category="CHILDREN">
<title>Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title>Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
XML 命名规则
- 名称可以含字母、数字以及其他的字符
- 名称不能以数字或者标点符号开始
- 名称不能以字符 “xml”(或者 XML、Xml)开始
- 名称不能包含空格
最佳命名习惯
- 使名称具有描述性。使用下划线的名称也很不错。
- 名称应当比较简短,比如:<book_title>,而不是:<the_title_of_the_book>。
- 避免 “-” 字符。如果您按照这样的方式进行命名:“first-name”,一些软件会认为你需要提取第一个单词。
- 避免 “.” 字符。如果您按照这样的方式进行命名:“first.name”,一些软件会认为 “name” 是对象 “first” 的属性。
- 避免 “:” 字符。冒号会被转换为命名空间来使用(稍后介绍)。
XML 属性
XML 元素可以在开始标签中包含属性,类似 HTML。属性 (Attribute) 提供关于元素的额外(附加)信息。
- XML 属性必须加引号,单引号和双引号均可使用。
<person sex="female">
或
<person sex='female'>
XML 元素 vs. 属性
<person sex="female">
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
<person>
<sex>female</sex>
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
上述代码表示了同样的信息,也就是说XML中,属性携带的信息量可以被子元素取代。没有什么规矩可以告诉我们什么时候该使用属性,而什么时候该使用子元素。在 HTML 中,属性用起来很便利,但是在 XML 中,您应该尽量避免使用属性。如果信息感觉起来很像数据,那么请使用子元素吧。
XML属性的缺点
- 属性无法包含多重的值(元素可以)
- 属性无法描述树结构(元素可以)
- 属性不易扩展(为未来的变化)
- 属性难以阅读和维护
XML 验证
拥有正确语法的 XML 被称为“形式良好”的 XML。通过 DTD 验证的 XML 是“合法”的 XML。
“形式良好”(Well Formed)的 XML 文档
- XML 文档必须有根元素
- XML 文档必须有关闭标签
- XML 标签对大小写敏感
- XML 元素必须被正确的嵌套
- XML 属性必须加引号
边栏推荐
- Escape character is ‘^]’什么意思?怎么使用telnet
- 搭建ros交叉编译环境(从x86到nvidia arm)
- 荧光磷脂PEG衍生物之一磷脂-聚乙二醇-荧光素,Fluorescein-PEG-DSPE
- RT-Thread stm32 基础记录
- router---Programmatic navigation
- 谁说 Mysql 单表最大 2000 W ?我硬要塞它 1 个亿
- [UML] Summary of Information System Analysis and Design Knowledge Points
- 一文梳理NLP主要模型发展脉络
- 【解决方案 三十一】Navicat数据库结构同步
- 封装、继承、多态的联合使用实现不同等级学生分数信息的统计
猜你喜欢
Interviewer: Tell me the difference between NIO and BIO
03 多线程与高并发 - ReentrantLock 源码解析
【解决方案 三十一】Navicat数据库结构同步
【PHP实现微信公众平台开发—基础篇】第2章 微信公众账号及申请流程详解
Haproxy搭建web群集
封装、继承、多态的联合使用实现不同等级学生分数信息的统计
Diffusion Models:生成扩散模型
基于双层共识控制的直流微电网优化调度(Matlab代码实现)
Access Huawei game anti-addiction, click the anti-addiction pop-up window, the game crashes
Is the code more messy?That's because you don't use Chain of Responsibility!
随机推荐
MFC的相机双目标定界面设计
Interviewer: Tell me the difference between NIO and BIO
yum 查看已经安装过的包并卸载
ReentrantLock 原理
工具函数---字符串处理
【牛客刷题-SQL大厂面试真题】NO5.某宝店铺分析(电商模式)
Oracle 19c 单实例 19.3.0 升级到19.11.0 详细教程
【PHP实现微信公众平台开发—基础篇】第1章 课程介绍
《社会企业开展应聘文职人员培训规范》团体标准在新华书店上架
Control CD-ROM with VbScript
【WeChat Mini Program】Social Internship Production Project for Information Management and Information System Major--Trash Fingerprint
并发刺客(False Sharing)——并发程序的隐藏杀手
DateTimeFormatter api
router---mode
8/3 训练日志 (树状数组+区间覆盖+思维+01字典树)
LeetCode 1403 Minimum subsequence in non-increasing order [greedy] HERODING's LeetCode road
Why don't young people like to buy Mengniu and Yili?
内存定位利器-ASAN使用小结
云原生Devops 的实现方法
Ultra-QuickSort