本文已参与「新人创作礼」活动,一起开启掘金创作之路。
什么是 XML?
XML 指可扩展标记语言(Extensible Markup Language)
XML 是一种标记语言,很类似 HTML
XML 的设计宗旨是传输数据,而非显示数据
XML 标签没有被预定义。您需要自行定义标签。
XML 被设计为具有自我描述性。
XML 是 W3C 的推荐标准
XML文档是树结构:
根元素是所有其他元素的父元素
所有的元素都可以拥有子元素
<root>
<child>
<subchild>.....</subchild>
</child>
</root>
XML的语法:
- 所有的XML元素必须要有结束标签;开始标签、 结束标签
- 声明不属于XML本身的组成部分;
- xml的元素使用xml标签进行定义,区分大小写;
- XML标签之前必须正确嵌套;
this is test ; a和b的结束标签顺序有要求;
- 支持空元素:开始和结束标签之间没有任何值的元素,两种写法:
-
- XML文档必须包含根元素;
- XML 的属性值须加引号, 以<prop_name="str_value">的形式存在;
#在element元素里存在date的属性
- 支持实体引用,大于(>),小于(<)等,在 XML 中,有 5 个预定义的实体引用:
| < | < | 小于 |
|---|---|---|
| > | 大于 | |
| & | & | 和号 |
| ' | ' | 单引号 |
| " | " | 引号 |
<!-- comments -->这是注释- 空格字符会被保留
XML元素和属性
XML 元素指的是从<>开始标签直到</>结束标签的部分。元素可包含其他元素、文本或者两者的混合物。元素也可以拥有属性。
-
XML元素命名规则
-
-
名称可以含字母、数字以及其他的字符
-
名称不能以数字或者标点符号开始
-
名称不能以字符 “xml”(或者 XML、Xml)开始
-
名称不能包含空格
-
-
XML属性
-
- 属性提供有关元素的额外信息,通常提供不属于数据组成部分的信息
- XML 属性必须加引号包围,如果属性值本身包含双引号,那么有必要使用单引号包围它:
- 没有规定什么时候使用属性,什么时候使用子元素,根据实际情况自行决定; 但是尽量使用元素而非属性
一个XML的实例
<?xml version="1.0" encoding="UTF-8"?>
<LifecycleServiceConfig>
<service>
<name>gw</name> <!-- service name -->
<path>/usr/bin/gw</path> <!-- binary file stroage path in rootfs -->
<args> <!-- arg list -->
<arg>-h</arg> <!-- arg -->
</args>
<!-- lifecycle config relations -->
<config clientId="LC_VGW" <!-- config properties-->
domain="DOMAIN_BASE"
startGroup="0"
healthCount="4"
activeMode="SBASE_STATE_STANDBY,SBASE_STATE_ON"
action="ACTION_RESTART"
/>
</service>
</LifecycleServiceConfig>
解释:
- 第一行是XML的声明,包含了版本信息(1.0),和编码方式(UTF-8),应用程序解析xml文件时需要指定编码方式去解析的;
- 是当前xml文件的根元素, 以结尾;
- …是根元素的子元素
- name, path等是的子元素;
- clientId,domain等是元素的属性;
XML文档的包含
xml文档可以包含其他的xml文件,使得xml文件更简洁;包含的xml文件里的元素跟本文件里的元素访问方式一致;
语法介绍:
在元素属性里需要定义xi的命名空间:xmlns:xi="www.w3.org/2001/XInclu…"
该命名空间是由官方指定的,具体可以查看以上的网站信息;
然后使用以下的格式包含xml文件:
elements有以下几个属性可以设置:
- href : 对要包括的文档的 URI 引用。
- parse : 它的值可以是“xml”或“text”,用于定义如何包括指定的文档(是作为 XML 还是作为纯文本)。默认值是“xml”。
- xpointer : 这是一个 XPointer,用于标识要包括的 XML 文档部分。如果作为文本包括 (parse=”text”),将忽略该属性。
<xi:fallback **elements**/>
eg:
<xi:include href="test.xml" parse="text"/>
<xi:fallback>Sorry, the file is unavailable<xi:fallback>
</xi:include>
类似与try…except…处理,如果xinclude有问题,则显示fallback的内容;
xml文件包含的例子:
<lifecycleServiceConfig version="1.0" xmlns:xi="<http://www.w3.org/2001/XInclude>">
<xi:include href="base_domain_services.xml"/>
</lifecycleServiceConfig>
```