.net学习笔记---xml基础知识

一、XML简介

  XML是一种标记语言,用于描述数据,它提供一种标准化的方式来来表示文本数据。XML文档以.xml为后缀。需要彻底注意的是XML是区分大小写的。

  先从一个简单的XML例子来了解下xml基础:

<?xml version="1.0" encoding="utf-8" ?>
<books ISBN="9787544238212">
  <title>xml学习笔记</title>
  <price>30</price>
  <pagecount>300</pagecount>
</books>

  第一行表明,本XML遵守的版本是1.0,使用的字符编码是UTF-8字符集。

  每个XML元素都已一个起始标记开始和一个结束标记结束。比如开始:<title>,结束:</title>。XML元素可以带有属性,属性值要加引号。比如上例中的ISBN就是属性,属性值要加双引号。同时用等号连接。

  一个XML文档只能够有一个根节点,如上例中books就是根节点。

  以下列出XML的几个要点:

  1. XML是一种可扩展标记语言;
  2. XML的标记没有被预定义,用户可以自行定义标记来描述数据;
  3. XML主要用来描述和存储数据;
  4. XML具有自我描述性;
  5. XML是树状结构的文档,是个结构化的文档;
  6. XML文档是个文本文件;

二、XML语法

  1. 每个开始标记都必须有结束标记;
  2. 一个XML文档只能够有一个根元素;
  3. 所有XML元素必须正确嵌套;
  4. 属性值必须加引号;
  5. 一个元素不能有相同的属性;

  下面以示例来解释XML常用的术语。

  1、标记

  标记分为开始标记和结束标记,如<title>就是一个开始标记。</title>就是一个结束标记。开始标记与结束标记之间的内容成为XML元素的内容。如果一个XML元素没有内容,我们称其为空元素。如<title></title>。

  2、元素

  XML元素是从一个开始标记到它结束标记的一段内容。比如 <title>XML学习笔记</title> 就是一个元素。

  3、属性

  一个元素可以带有属性,属性写在开始标记里,写在元素名称的后面。比如<books ISBN="9787544238212">,其中ISBN="9787544238212"就是books元素的一个属性。ISBN 是属性的名称, 9787544238212 是属性值。一个XML元素不能有相同的XML属性名。

三、XML元素之间的关系

  1. 子节点;
  2. 父节点;
  3. 并列节点(兄弟关系);

  下面以一个例子来解释这三种关系。

<?xml version="1.0" encoding="utf-8" ?>
<father>Tom Smith
  <son>
    John Smith
    <grandson>Hans Smith</grandson>
  </son>
  <daughter>Jane Smith</daughter>
</father>

   在上面的例子中,son元素就是father元素的子节点。father元素就是son元素和daughter元素的父节点。son元素和daughter又称并列节点。

  XML元素中可以带有属性作为XML元素的附加信息。

  如果属性值中包含双引号,就用单引号包围属性值。如:

<site info = ‘wo "ai" ni‘>

  如果属性值中包含单引号,就用双引号包围属性值。如:

<site info = "wo ‘ai‘ ni">

  一个XML元素可以有一个或多个属性,每个属性用空格分开。如:

  <person name="zhangsan" age="23">

四、XML名称命名规则

  XML的名称可以包含英文字母和数字,或者其他字符比如下划线。XML名称不能以数字或者标点符号开头,XML不能以xml开头(或者xml的大小写,因为这是XML相关标准的保留词)。XML名称不能包含空格,虽然XML名称支持下划线(_)、连字符(-)、句号(.)和冒号(:),但XML开头不能使用连字符(-)、句号(.)和冒号(:)。

  1、XML实体应用

  (1)、在XML标记里除了表示一个标记的开始之外,不允许有小于号<,因为小于号总是被XML解析器解释为一个标记的开始。

  如 :

<person> if age < 10 </person>

  这行代码是错误的,如果一定要在XML元素内容里书写小于号,那么可以使用小于号的实体引用,即:&lt; 来替换小于号。

  如:

<person> if age &lt; 10</person>

  是正确的写法。

  (2)在XML里也不能使用&这个字符,因为&被解释为某个实体引用的开始。所以必须使用&的实体引用&amp; 来代替&。

  如:

  • <person>a & b</person>     是错误的
  • <person>a &amp; b</person>  是正确的

  下面给出XML5个预定的实体引用

实体引用 字符 说明
&lt; < 小于号
&gt; > 大于号
&amp; &
&apos; 单引号
&quot; " 双引号

  当XML解析器解析含有上述实体引用的XML文档时,会将这些实体引用转换成相应的字符。

  只有<和&在XML是非法的。另外几个是合法的,可以直接写,只是用实体引用更加清晰而已。    

  2、XML CDATA区

  当需要往XML文档里添加一段内容,而内容里有很多<或者&的时候,将所有<或&转换为实体引用是很麻烦的事情,这时候可以使用CDATA区,在CDATA区里不必使用实体引用,因为XML解析器不会计算CDATA区里的内容。

  CDATA区以   <![CDATA[  开始 ,以  ]]>  结束

  示例如下:

     <mycode>
        <![CDATA[
          <html>
            <title></title>
            <body></body>
          </html>
        ]]>
     </mycode>

  需要注意的是:在CDATA区内,不能出现 ]]>

  3、XML注释

  XML注释以  <!--  开始,以  -->  结束。

  示例:

<!-- 这是注释 -->

  在XML注释里面,除了结束符-->,不能出现两个连字符--。XML注释也可以放在元素内容里。

  4、XML声明

  XML文档应当以XML声明开始,不过不是必须的。

  示例:

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<person>
    张三
</person>

  如果一个XML文档含有声明,必须放在XML文档的第一行。

  XML文档声明主要有三个参数。

  1. 版本:版本表示遵循的是W3C的XML1.0标准。
  2. 字符编码:字符编码表示该XML文档使用的字符编码方式。对于中文文档,应该使用UTF-8或者Unicode。如果是纯英文,可以使ISO-8859-1编码。
  3. 独立:如果XML standalone的值是no,表示它需要DTD。不需要DTD的XML文档,standalone的值应该写为yes。

  5、格式正确的XML文档。

  • 每个开始标记必须有结束标记。
  • XML文档只有一个根元素。
  • XML元素必须被正确嵌套。
  • XML元素不能有相同名称的属性。
  • XML属性值必须加引号。
  • XML注释不能卸载标记里。
  • XML文档里不能出现<和&标记。必须用实体引用代替。

  6、XML命名空间

  XML命名空间是为了解决当XML文档中存在多个相同名称的元素时,避免冲突而引入的。

  命名空间的语法:

  • xmlns:prefix="URI"
  • xmlns:表示必须的属性。
  • prefix:表示命名空间的别名,它的值不能为xml。
  • URI:用来标识抽象或物理资源的的紧凑字符串。为了保证标识的唯一性,xml采用Internet上的网址作为这个标识符,因为网址是独一无二的。

  默认命名空间示例:

<?xml version="1.0" encoding="utf-8" ?>
<Article xmlns="http://www.xxx.com/"> <!--默认命名空间-->
  <author age="30">张三</author>
  <length>12000</length>
  <price>42</price>
</Article>

  带名字的命名空间|:

<?xml version="1.0" encoding="utf-8" ?>
<h:Article xmlns:h="http://www.xxx.com/"> <!--带前缀的命名空间-->
  <h:author age="30">张三</h:author>
  <h:length>12000</h:length>
  <h:price>42</h:price>
</h:Article>

  7、DTD和XML Schema

  DTD文档类型定义,是一套关于标记符的语法规则。它是XML1.0班规格的一部分,是XML文件的验证机制。属于XML文件组成的一部分。DTD是一种保证XML文档格式正确的有效方法,可以通过比较XML文档和DTD文件来看文档是否符合规范,元素和标签使用是否正确。一个DTD文档包括:元素的定义规则,元素间关系的定义规则,元素可使用的属性、可使用的实体或符号规则。不同的公司之需定义好标准的DTD,个公司都能够依照DTD建立XML文件,并且进行验证,如此就可以轻易的建立标准与交换数据。这样便满足了网络共享和数据交互。

  DTD文件是一个ASCII的文本文件,后缀名为.dtd。每一个XML文档都可以携带一个DTD,用来对该文档格式进行描述,测试该文档是否为有效的XML文档。

  XML Schema如果DTD一样是负责定义和描述XML文档的结构和内容模式的。它可以定义XML文档中存在哪些元素和元素之间的关系,并且可以定义元素和属性的数据类型。是针对DTD的某些缺点,如:DTD不支持数据类型,扩展性较差等而出现的。

  XML Schema具有以下优点:

  •   一致性:Schema使得XML得定义不必再利用一种特定的形式化语言,而是直接借助XML自身的特性,利用XML的基本语法规则来定义XML文档的结构。
  •   扩展性:Schema对DTD进行了扩充,引入了数据类型,命名空间,从而具备较强的可扩展性。
  •   互换性:利用Schema,我们能够书写XML文档以及验证文档的合法性。另外通过特性的映射机制,还可以将不同的Schema进行转换,以实现更高层次的数据交换。
  •   规范性:同DTD一样,Schema野提供了一套完整的机制以约束XML文档中的标记的使用。相比之下Schema基于XML,更具有规范性。
  •   XML Schema的限制功能例如:那些元素可以出现在文档中,元素间的关系是什么,每个元素有那些内容和属性以及元素出现的顺序和次数等等。
时间: 2024-10-26 03:02:56

.net学习笔记---xml基础知识的相关文章

C#学习笔记(基础知识回顾)之值类型与引用类型转换(装箱和拆箱)

一:值类型和引用类型的含义参考前一篇文章 C#学习笔记(基础知识回顾)之值类型和引用类型 1.1,C#数据类型分为在栈上分配内存的值类型和在托管堆上分配内存的引用类型.如果int只不过是栈上的一个4字节的值,该如何在它上面调用方法? 二:值类型转换为引用类型--装箱 2.1CLR对值类型进行装箱时:新分配托管堆内存,将值类型的实例字段拷贝到新分配的内存中,返回托管堆中新分配对象的地址.这个地址就是一个指向对象的引用. int i = 10; Object obj = i; 三:将引用类型转换为值

[Golong]学习笔记(一) 基础知识

Go编程基础 Go的内置关键字(25个) 不多 break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continute for import return var Go的注释方法(和js一样) 单行注释: // 多行注释: /**/ Go程序一般结构 common_structure.go 通过 pack

C#学习笔记(基础知识回顾)之枚举

一:枚举的含义 枚举是用户定义的整数类型.在声明一个枚举时,要指定该枚举的示例可以包含的一组可接受的值.还可以给值指定易于记忆的名称.个人理解就是为一组整数值赋予意义. 二:枚举的优势 2.1:枚举可以使代码更易于维护,有助于确保给变量指定合法的.期望的值. 2.2:枚举可以使代码清晰,用描述性的名称来表示整数值,增加代码可读性. 三:枚举的使用 /// <summary> /// 声明一个枚举,审核状态 /// </summary> public enum AduitStatus

[算法学习笔记]算法基础知识

算法基础知识 算法的五大要素 有穷性:算法必须能够在有限个步骤内完成. 确定性:算法的每一步必须有确定的定义. 输入 输出 可行性:算法的每个步骤都必须能分解为基本的可执行操作,每个步骤都必须能在有限时间内完成 循环不变式 循环中的循环不变式可以帮助我们理解算法的正确性.为了证明算法的正确,必须证明循环不变式的三个性质: 1. 初始化:循环不变式在循环开始之前是正确的. 2. 保持:循环不变式在循环的每一次迭代开始之前是正确的. 3. 终止:在循环结束时,不变式会给出一个可以对判断算法是否正确有

《汇编语言》学习笔记1——基础知识

第一章   基础知识 汇编语言的组成 汇编指令:机器码的助记符,有对应的机器码(汇编语言的核心) 伪指令:没有对应的机器码,由编译器执行,计算机并不执行 其他符号:如:+.-.*./等,由编译器识别,没有对应的机器码 指令和数据都是应用上的概念,在内存或磁盘上指令和数据都是二进制信息. 存储器被划分为若干个存储单元,每个存储单元从0开始. 一个存储器有128个存储单元,一个存储单元存储一个字节,一个字节有8个二进制位. 内存换算: 1bit=8byte(B).1KB=1024B.1MB=1024

Scala学习笔记--正则表达式基础知识、如何在scala内使用

正则表达式语法:https://msdn.microsoft.com/zh-cn/library/ae5bf541(VS.80).aspx 基础知识:正则表达式30分钟入门教程 http://www.jb51.net/tools/zhengze.html  版本:v2.33 (2013-1-10) 作者:deerchao 转载请注明来源 使用格式:  见java API  http://docs.oracle.com/javase/7/docs/api/ java : java.util.reg

汇编学习笔记---(2)基础知识

今天,接着上次,继续学习汇编语言,主要对内存地址空间.主板.接卡口.存储芯片等进行了解. 什么是内存地址空间? 要搞清楚这个问题,我们首先要知道主板和接口卡. 每个PC都会有一个主板,主板上附有核心器件,包括CPU.存储器.外围芯片组.扩展插槽等,它们通过地址总线+数据总线+控制总线相连. 接口卡啥作用,说白了就是通过总线接收CPU发送的命令,对显示器.音响等外部设备进行控制. 一台PC中主要有两种存储器:随机存储器RAM和只读存储器ROM. RAM中用于存放CPU使用的绝大部分程序和数据,PC

R语言学习笔记:基础知识

1.数据分析金字塔 2.[文件]-[改变工作目录] 3.[程序包]-[设定CRAN镜像] [程序包]-[安装程序包] 4.向量 c() 例:x=c(2,5,8,3,5,9) 例:x=c(1:100) 表示把1 - 100的所有数字都给x这个变量 5.查看x的类型:>mode(x) 6.查看x的长度:>length(x) 7.将两个向量组成一个矩阵: >rbind(x1, x2)  注:r是row的意思,即行,按行组成矩阵. >cbind(x1, x2)  注c是column的意思,

python3基础学习笔记(基础知识)-01

python的基础学习: 数据类型:python是弱类型语言,在定义变量的时候,可以不直接制定数据类型. 1.Numbers: int 有符号整型    a = (-1)  a = 1 long 长整型 float 浮点型 complex 复数 2.boolean: True    Flase 3.String :字符串   a = "Hello World" 4.List :列表 有序  list1 = [] 5.Tuple : 元组  定义后不能被修改  a = (1,2,3) 6