一、基本概要

XML,全称是eXtensible Markup Language,可扩展的标记语言,是Web服务的基础之一,使用XML,用户可以定义自己需要的标记。而用户创建的标记可以使用文档类型定义DTD(Document Type Definition)来定义,但是如果需要准确地描述数据的类型信息,并且便于计算机程序处理XML,则应该使用XSD大纲来定义新的标记。

二、XML的作用

1.存取数据

将数据存储到XML文件中供应用程序使用,例如:要在Web应用程序中显示页面的当前位置,可以将所有的页面信息存储到一个XML文件中,XML文件中元素之间的关系对应着页面之间的关系,然后应用程序读取XML文件中元素内容就可得到当前页面信息。

2.使内容与表示分离:

XML标记描述的是文档的结构和意义,也就是数据的实际内容,它不描述如何格式化并显示这些数据,显示数据的任务需要其他语言来描述。

3.提高数据共享的兼容性:

不兼容的两个系统可以使用同一XML文件来交互数据,不同的应用程序都可以使用同一XML来访问数据。

三、XML文挡结构

XML文档结构内容主要包括序言和文档元素,区分字母大小写.

1.XML声明:<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>

version 表示版本,encoding表示编码,standalone表示该XML文件是否与其他文件关联使用(yes表示不关联使用,默认是no:可关联使用)。

2.处理指令:<?Processing_Instruction_target    Processing_Instruction_Information>

处理指令可以不遵守XML语法规则,是用来处理XML文档的应用程序提供信息的,XML解析器将其原封不动的交给应用程序处理。

比如在XML文档中,有可能包含一些非XML格式的数据(如:样式表),这些数据XML处理器无法处理,我们就可以通过处理指令来通知其他应用程序来处理这些数据,如:

<?xml-stylesheet  href="hello.css"  type="text/css"?>  ,其中"xml-stylesheet"叫做处理指令的目标,它必须标识到用到的应用程序

3.注释:<!--注释的内容 -->,注释是对文档结构或内容的解释,他们不属于XML文档的内容,XML解析器不会处理他们。

4.字符和实体引用:类似HTML中的 &nbsp; 这种东东,XML五个字符实体引用:

          实体              实体引用                  意义            
             lt            &lt;             <(小于号)            
             gt            &gt;             >(大于号)
             amp            &amp;             &(和)
            apos            &apos;             ' (单引号)
            quot                  &quot;                 " (双引号)

5.CDATA区:类似于HTML中的<pre></pre>标签的作用,在CDATA区内,所有的标记和实体引用都被忽略,而被XML处理程序一视同仁地当作字符数据对待。当需要在XML文档中显示包含标记的文本时,就可用CDATA区。CDATA区的使用形式如下:<![CDATA[ 内容 ]]>。注意:CDATA区不能嵌套使用

6.元素:XML文件的主要结构,一个元素就代表一项信息。元素通常包括 元素名称、开始标记、属性、文本内容、结束标记。

<elementName attlName="att1Value" att2Name="att2Value" ... />或<elementName ...>文本内容</elementName>

四、XML命名空间

1.什么是XML命名空间:类似于C#中的命名空间,是XML文档中添加在同名元素前的标识符,用于区分不同意义的同名元素,当然任何元素前都可以添加命名空间用以区分同类元素集合,任何合理的唯一的字符串都可以做XML命名空间,如统一资源定位符(URI)、统一资源名称(URN)、全局唯一标识符(UUID)、全球唯一标识符(GUID)等等。

2.XML命名空间的作用:区分不同意义的同名的元素,防止同名元素解析错误

3.使用方法:<namespacePrefix:elementName xmlns:namespacePrefix="命名空间">...</namespacePrefix:elementName>

其中的namespacePrefix叫做命名空间前缀,是代表该命名空间的一个字符串,这样写能够避免长度较大的命名空间写在元素前头影响解析和阅读。

4.作用范围:命名空间都是在某个元素内声明的,而它的作用范围就是该元素。该元素以及它的子元素中没有其他限定的元素都可以引用这个命名空间。

五、XML常用的两种解析机制

    

     1.DOM

DOM即文档对象模型,基于DOM的XML解析器会将XML文档转换为一个对象模型的集合(即DOM树)加载在内存,应用程序就是通过操作DOM树来实现对XML文档任意数据进行随机操作的,利用DOM接口的机制也称作随机访问机制。

DOM四个基本接口:①Document接口:对文档进行操作的入口,继承于Node接口;②Node接口:其他接口的父类;③NodeList接口:一个节点的集合,包含该节点的所有子节点;④NamedNodeMap接口:一个节点的集合,通过该接口,可以建立节点与节点之间的一一映射的关系,从而用节点名可以直接访问特定的节点。

优点:操作随机性、灵活性

缺点:当XML文档内容较大时,对内存的需求很高,且操作效率低下

     2.SAX

       SAX,XML简单应用程序接口,即事件驱动接口,SAX会从头到尾顺序解析整个XML文档,当遇到一个节点的开始或结束时,会触发事件,并激活相应的事件处理函数,应用程序通过这些事件处理函数实现对XML文档的访问。SAX提供的是顺序访问机制,对于已经分析过的部分,不能再倒回去重新处理,SAX分析器只是顺序的检查XML文档中的字节流,判断当前字节的合法性,再触发事件,而事件处理函数本身是由应用程序来实现的。

优点:对内容较多的XML文档解析效率高

缺点:只适合对XML文档进行"读"的操作,不适合"写“,操作缺乏灵活性

        

      

XML初学笔记的更多相关文章

  1. XML学习笔记

    XML学习笔记 第一部分:XML简介 我们经常可以听到XML.HTML.XHTML这些语言,后两者比较清楚,一直不是很明白XML是什么,这里做一个总结. XML(eXtensible Markup L ...

  2. mybatis-config.xml简单笔记

    mybatis-config.xml简单笔记 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ...

  3. applicationContext.xml简单笔记

    applicationContext.xml简单笔记 <?xml version="1.0" encoding="UTF-8"?> <bean ...

  4. C++ STL初学笔记

    C++  STL初学笔记 更系统的版本见徐本柱的PPT set 在这儿:http://www.cnblogs.com/pdev/p/4035020.html #include <vector&g ...

  5. Spring 初学笔记

    Spring 初学笔记: https://blog.csdn.net/weixin_35909255/article/category/7470388

  6. delphi操作xml学习笔记 之一 入门必读

    Delphi 对XML的支持---TXMLDocument类       Delphi7 支持对XML文档的操作,可以通过TXMLDocument类来实现对XML文档的读写.可以利用TXMLDocum ...

  7. laravel 5.6初学笔记

    laravel 5.6初学笔记 http://note.youdao.com/noteshare?id=bf4b701b49dd035564e7145ba2d978b4 框架简介 laravel文档齐 ...

  8. csapp网络编程初学笔记

    csapp网络编程初学笔记 客户端-服务器编程模型 每个网络应用都是基于客户端-服务器模型,服务器管理某种资源,并且通过操作来为它的客户提供某种服务 客户端-服务器模型中的基本操作是transacti ...

  9. Python初学笔记之字符串

    一.字符串的定义 字符串是就一堆字符,可以使用""(双引号).''(单引号)来创建. 1 one_str = "定义字符串" 字符串内容中包含引号时,可以使用转 ...

随机推荐

  1. Composite 组合模式

      简介         <大话设计模式>一书中组合模式的定义为:将对象组合成[树]形结构以表示[部分-整体]的层次结构,组合模式使得用户对[单个对象]和对[组合对象]的使用具有一致性. ...

  2. 在ASP.NET MVC5 及 Visual Studio 2013 中为Identity账户系统配置数据库链接及Code-First数据库迁移

    在ASP.NET MVC5 及 Visual Studio 2013 中为Identity账户系统配置数据库链接及Code-First数据库迁移 最近发布的ASP.NET MVC 5 及Visual ...

  3. JavaScript设计模式之观察者模式(学习笔记)

    设计模式(Design Pattern)对于软件开发来说其重要性不言而喻,代码可复用.可维护.可扩展一直都是软件工程中的追求!对于我一个学javascript的人来说,理解设计模式似乎有些困难,对仅切 ...

  4. Dhroid框架笔记(IOC、EventBus)

    dhroid 目前包含了6大组件供大家使用1.Ioc容器: (用过spring的都知道)视图注入,对象注入,接口注入,解决类依赖关系2.Eventbus: android平台事件总线框架,独创延时事件 ...

  5. JavaScript—window对象使用

    window对象是JavaScript浏览器对象模型中的顶层对象,包含多个常用方法和属性: 1. 打开新窗口 window.open(pageURL,name,parameters) 其中:pageU ...

  6. SQL后台分页三种方案和分析

    建立表:CREATE TABLE [TestTable] ( [ID] [int] IDENTITY (1, 1) NOT NULL , [FirstName] [nvarchar] (100) CO ...

  7. C++ 性能剖析 (四):Inheritance 对性能的影响

    (这个editor今天有毛病,把我的format全搞乱了,抱歉!) Inheritance 是OOP 的一个重要特征.虽然业界有许多同行不喜欢inheritance,但是正确地使用inheritanc ...

  8. Linux 查看文件内容的命令

    转载自:新浪博客 (观看档案内容 : cat, tac, more, less, head, tail, nl, 刚刚我们提到的都只是在于显示档案的外观,或者是移动与复制一个档案或目录而已,那么如果我 ...

  9. FindBugs的Bug类型及分析

    FindBugs分析记录 Bad Practice: Class defines a clone() method but the class doesn't implement Cloneable. ...

  10. ftp文件操作

    PHP FTP操作类( 上传.拷贝.移动.删除文件/创建目录 ) 2016-06-01 PHP编程 /** * 作用:FTP操作类( 拷贝.移动.删除文件/创建目录 ) */ class class_ ...