XML基础

2020-06-16

1. XML概述

XML : 可拓展标记语言(Extensible Markup Language, XML)。 是一个非常有用的、用来描述结构化信息的技术。

1.1 XML文档头

XML 文档应当以一个文档头开始,严格来说,文档头是可选的,但是强烈建议使用文档头。文档类型定义的是确保文档正确的一个重要机制。

1
<?xml version=1.0 encoding="UTF-8"?>

1.2 XML元素

XML 文档的正文包含根元素,根元素包含其他元素。

1
2
3
4
5
<?xml version=1.0 encoding="UTF-8"?>
<config>
<title>miracle's blog</title>
<content>XML基础与解析</content>
</config>

注意:

元素可以有子元素、文本或两者兼有。在设计XML文档时,对元素的设计的最好的方式是:要么全部使用元素,要么全部使用文本,这样做的目的是方便解析。

我们应该避免下面这种设计:

1
2
3
4
5
6
<?xml version=1.0 encoding="UTF-8"?>
<!-- 不推荐:元素config既包含文本、又包含元素 -->
<config>
miracle's blog
<content>XML基础与解析</content>
</config>

1.3 XML属性

XML 元素可以包含属性,例如:

1
2
<?xml version=1.0 encoding="UTF-8"?>
<config version="1.0"></config>

问题:什么时候使用属性,什么时候使用元素?

1
2
3
4
5
6
7
8
9
文档一:
<?xml version=1.0 encoding="UTF-8"?>
<config version="1.0"></config>

文档二:
<?xml version=1.0 encoding="UTF-8"?>
<config>
<version>1.0</version>
</config>

从上面示例来看,文档一似乎比文档二要更简单一些。然而,属性的灵活性要比元素差很多,通常情况下属性只应该用来作为值的解释,而不是用来作为值。

结论:

优先使用元素,通常情况下属性只应该用来作为值的解释,而不是用来作为值。

注意:

在HTML中,所有的属性都不会展示在HTML中。


2. XML与属性文件(property file)的区别

属性文件包含了各种键值对,例如:

name=sungm

区别:

  1. 属性文件结构更加简洁,在要描述的信息更加复杂的场景下,属性文件不能更好的处理它,XML文件可以处理更加复杂的结构化信息。
  2. 属性文件采用的是单一的平面结构,XML文件采用的是层次结构,也可以说是树型结构,更加清晰。
  3. 属性文件中key是不能重复的,XML文件可以存在重复的元素。

结论:

在处理不复杂的结构化信息时优先考虑使用属性文件,在处理复杂的结构化信息时考虑使用XML文件


3. XML与HTML的区别

HTML : 超文本标记语言(Hyper Text Markup Language)

区别:

  1. HTML对大小写不敏感;XML对大小写敏感
  2. 在HTML中,如果从上下文中可以分清哪里是段落或者列表项的结尾,那么结束标签可以省略;XML不可省略结束标签
  3. 在XML中,只有单个标签而没有对应的结束标签的元素必须以 / 结尾。
  4. 在XML中,属性值必须用引号括起来;在HTML中,引号可有可无
  5. 在HTML中,属性可以没有值;在XML中,属性必须都有属性值

4. 良好的XML文档格式

  • XML文档必须有根元素,且只能有1个根元素
  • XML文档必须有关闭标签
  • XML文档对大小写敏感
  • XML对大小写敏感
  • XML元素必须被正确的嵌套
  • XML属性必须加引号