XML学习记录

130 阅读3分钟

XML

xml,全称extensiable markup language(可扩展标记语言)。是一种使用标签描述数据的语言,一个标签用于描述一段数据,一个标签可以分为开始标签和结束标签,在开始标签和结束标签之间,又可以使用其他标签来描述其他数据,一次来实现数据关系的描述。

一个xml文件包括以下几个部分:

  1. 文档声明
  2. 元素
  3. 属性
  4. 注释
  5. CDATA区、特殊字符
  6. 处理指令(processing instruction)

XML文档声明 元素(或叫标记、节点) 属性 注释 CDATA节 处理指令(processing instruction)

文档声明

<?xml version ="1.0" encoding="utf-8" standalone='yes'?> 

放在xml文件的第一行,由以下几部分组成:

  • version-文档符合xml1.0规范,一般用不到1.1
  • encoding-文档字符编码,比如"GB2312"或者"utf-8"
  • standalone-文档定义是否独立使用,默认为“no”,yes代表独立使用,no代表xml不是独立的,该属性仅在使用DTD时相关。(当使用模式而不是 DTD时,属性是无关紧要的。)

元素(或叫标记、节点)

  1. <元素名></元素名> 这就代表了一个元素

  2. 每个xml文件都有且只有一个根元素

    • 它包括其他所有元素
    • 根元素的起始标记在所有元素的起始标记之前
    • 根元素的结束标记在所有元素之后
  3. xml元素是指xml元素中出现的标签,一个标签分为开始标签和结束标签,有以下几种书写格式:

    • 包含标签体:

      • <a>www.sohu.com</a>
    • 不含标签体的:

      • <a></a>,简写为<a/>
    • 一个标签中可以嵌套若干子标签,可以任意层数的嵌套,但是不能交叉嵌套

      • <a><b>这是正确的</b></a>
      • <a>这是<b>错误的</a></b>
    • 对于xml标签中出现的所有空格和换行,xml解析程序会当作标签内容进行处理。例如下面两段内容的意义是不一样的:

      • <stu>xiaoming</stu>
      • <stu>
            xiaoming
        </stu>
        
    • 要特别注意空格和换行,他们都将被作为原始内容被处理

    • 命名规范:一个xml元素可以包含字母、数字以及其他一些可见字符,但必须遵顼以下规范:

      • 区分大小写,p和P是不一样的
      • 不能以数字或者下划线“_”开头
      • 元素内不能包含空格
      • 名称中间不能包含冒号":"
      • 可以使用中文,但是一般不这么用

属性

<元素名 属性名1="属性值1" 属性名2="属性值2">标签体</元素名>

  1. 属性值用单引号或者双引号分割,属性值中有单引号,则用双引号分割,属性值中有双引号,则用单引号分割,还有一些实体(转义字符)
  2. 特定的属性名称在同一个元素标记中只能出现一次(元素属性不能重复)
  3. 属性值不能包括<,>,&,,如果一定要包含,要使用实体

注释

<!--这是一个注释-->

  1. 注释内容不要出现--
  2. 不要把注释放在元素中间
  3. 注释不能嵌套
  4. 可以在除元素以外的任何地方放注释

CDATA节

<![CDATA[
        ......
]]>
  1. 作用:为一些内容不相让解析引擎解析执行,而是当作原始内容处理,用于把整段内文本解释为纯字符数据而不是标记,就用CDATA节

  2. CDATA节可以输入任何字符(]]>除外),但是不能嵌套

  3. 一个例子:他如果不包含在CDATA中就会报错

    <stu id="001">
        <name>杨过</name> 
        <sex></sex>
        <age>20</age>
        <intro><![CDATA[ad<<&$^#*k]]></intro>
    </stu>
    

    正确写法:

    <![CDATA[
        <stu id="001">
            <name>杨过</name> 
            <sex></sex>
            <age>20</age>
            <intro><![CDATA[ad<<&$^#*k]]></intro>
        </stu>
    ]]>
    

处理指令(processing instruction)

作用:用来指示解析引擎如何解析XML文件

一个例子:

使用css样式表来修饰xml文件,编写文件my.css

name{
    font-size:80px;
    font-weight:bold;
    color:red;
    }
​
sex{
    font-size:60px;
    font-weight:bold;
    color:blue;
    }
​
sex{
    font-size:40px;
    font-weight:bold;
    color:green;
    }

在xml文件中使用处理指令来引入这个css文件:

<?xml version="1.0" encoding="gb2312"?>
<?xml-stylesheet href="my.css" type="text/css"?>
<class>
    <stu id="001">
        <name>杨过</name>
        <sex></sex>
        <age>20</age>
    </stu>
    <stu id="002">
        <name>小龙女</name>
        <sex></sex>
        <age>21</age>
    </stu>
</class>