XML 入门学习笔记
什么是 XML
XML 的全称是 eXtensible Markup Language(可扩展标记语言),是一种用来存储和传输结构化数据的文本格式。
XML 为什么我学习XML
目前Unity对于Json数据持久化已经有了一套较为完善的方案(JsonUtility),但通过交流得知Json存储较为复杂的类、复杂嵌套数据时不稳定,而用XML某种程度上可以解决上述一些问题。当前Unity持久化方案的主流并非XML,XML的性能也不如Json,但本着学到就是赚到、学习XML所需时间成本不大,我决定开展XML的学习。
XML 基本语法
语法规则
XML 必须有根节点(其他所有节点的父节点);
示例:
<root>
<myclass>MyClass</myclass>
</root>
XML 头声明:不强制要求,可有可无;但建议书写;
示例:
<?xml version="1.0" encoding="utf-8" ?>
<root>
<myclass>MyClass</myclass>
</root>
所有 XML 元素/节点都必须是成对标签(可以参考HTML);
标签名大小写敏感(区分大小写);
标签不能交叉,错误示例:
<root>
<a>aaaa<b>bbb</a></b>
</root>
XML 书写注意点
注释
同HTML一样,示例:
<!-- 这是一句注释 -->
特殊字符
| 特殊字符使用实体转义,在 XML 中需要转义的字符有: | 字符 | 名称 | 实体引用 | 说明 |
|---|---|---|---|---|
< |
小于号 | < |
不能直接出现在文本或属性值中,会被解析为标签开始 | |
> |
大于号 | > |
严格来说只有 ]]> 序列中必须转义,但建议始终转义 |
|
& |
和号 | & |
必须转义,否则会被当作实体引用的开始 | |
" |
双引号 | " |
在由双引号包裹的属性值中必须转义 | |
' |
单引号 | ' |
在由单引号包裹的属性值中必须转义 |
元素属性
属性用于描述标签自身的额外信息,一个标签可以有多个属性,属性的值必须使用引号引起来;
元素属性命名规则同变量名命名规则。(在解析 XML 数据时会带来额外解析代码)
示例:
<root>
<person>
<name>Russel</name>
<age>28</age>
</person>
<person>
<name age="28">Russel</name> <!-- 这里就是添加了age为28的属性-->
</person>
</root>
CDATA
处于CDATA区域中的内容不会被解析。
注意:特殊字符较少时,使用实体替换,较多时使用CDATA。
语法示例:
<root>
<msg><![CDATA][这其中的内容不会被解析]></msg>
</root>

