XML相关

一、xml概述
1、xml是什么?
  Extensible Markup Language 可扩展标记语言。xml是一种数据存储格式, 本质上就是一段字符串。
  那么,xml是如何来保存数据的?
 (1)xml中允许用户自定义标签, 标签分为开始标签和结束标签。开始标签和结束标签之间可以嵌套其他的标签。
 (2)正是利用标签来保存数据, 利用标签之间嵌套关系来保存数据之间的层级关系。
 
2、xml的应用场景
  (1)传输数据:由于xml本质上是一段字符串, 具有跨平台的特性, 因此可以在不同系统之间进行数据交换。
  (2)用作配置文件:由于xml可以保存有结构的数据, 因此xml常被用来用作应用程序的配置文件。
  
二、语法
1、文档声明
  它是用来声明当前xml基本属性信息的, 解析器会根据文档声明来决定如何解析xml文件。
注意:
  (1)一个xml文件必须包含且只能包含一个文档声明。
  (2)文档声明必须放在xml文件的第一行,前面不能有任何内容。
  (3)如果一个xml文件没有包含文档声明, 则该xml是一个不符合规范的xml文件。
  (4)文件在保存时所使用的编码要和encoding属性所指定编码相同, 才可以避免乱码问题。
写法:

<?xml version="1.0"?>

version用来声明当前xml所遵循的xml规范, 目前就是1.0;

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

encoding用来声明当前xml所使用的字符集编码, xml解析器在解析xml的时候,会根据encoding属性所指定的编码来解析xml文件。

<?xml verison="1.0" encoding="UTF-8"? standalone="yes"?>

standalone用来声明当前文档是否独立, 如果xml文档不依赖其他的文档而存在, 表明当前文档是一个独立的文档, 可以指定值为yes, 如果当前文档需要依赖其他的文档而存在, 需要指定值为no。

2、元素
  一个标签(标记)就是一个元素。
  标签分为开始标签和结束标签, 在开始标签和结束标签之间的文本称之为标签体。如果一个标签既不包含标签体, 也不包含其他的子标签, 可以把开始标签和结束标签合并成一个自闭标签。
注意:
  标签要合理的嵌套, 不能出现交叉嵌套。一个xml文件有且仅有一个根标签。标签没有结束标签或者是自闭标签没有自闭!!!

元素的命名规范:
   区分大小写。
   不能以数字或标点符号开头。
   不能以xml(XML, Xml)开头。
   不能包含空格 如:
   不能包含冒号 如:<a:b>

3、属性
  一个元素上可以声明多个属性, 多个属性之间用空格隔开。
  属性与属性值用等号连接, 属性的值用单引号或者双引号引起来。属性的命名和元素遵循相同的命名规范。
  
4、注释
  格式:

 <!-- xml注释 -->

注意:
  注释不能放在文档声明的前面,注释不能交叉嵌套。
  
5、转义字符
常用的转义字符:

	    <  &lt;
	    >  &gt;
	    &  &amp;
	    "  &quot;
	    '  &apos;

三、xml约束
约束: 在xml中, 可以提供约束文档来约束xml文档的写法。
   DTD/Schema W3C。
这在spring等框架中应用广泛。

四、xml解析

DOM解析:
将整个XML文档加到内存中,用一个Document对象来表示整个文档。
将XML文档中所有的内容(元素、属性、文本等)都解析成一个一个的对象,
用对象来表示元素,用对象与对象之间的引用关系来表示元素之间的层级关系。
通过在程序中操作对象来间接的操作(增删改查)XML文档中的内容。
优点:
(1)可以十分方便对节点进行增删改查的操作。
(2)在内存中保存了一颗文档结构树, 只需要解析一次就可以重复使用这些数据。
缺点:
(1)将整个文档都加载到内存中用对象表示,占用内存空间,如果xml文档体积非常庞大时,将会十分耗费内存。
(2)需要等整个xml文档解析完成后,才可以对节点进行操作,相对来说耗费时间,效率低。

SAX解析:
优点:
(1)由于是逐行解析,因此不需要将整个XML文档加载进内存,占用内存小。理论上多大的XML文件都可以解析
(2)由于是逐行解析,遇到想要的内容就可以停下来处理,效率高
缺点:
(1)每次需要数据都需要重新解析。
(2)只能读数据,不能对XML文档进行增删改的操作。

五、B/S和C/S架构的特点
B/S: Browser-Server 浏览器服务器模型。比如: 网页游戏
  优点: 不需要下载客户端程序, 使用浏览器可以直接访问. 程序的升级操作是在服务器端进行的. 浏览器只需要刷新页面就可以看到升级后的效果
缺点: 浏览器具有一定的局限性, 页面的展示能力仍然是很差. 所有的页面数据都需要从服务器实时的获取, 所以对网速的依赖很高
C/S: Client-Server 客户端服务器模型。比如: QQ应用程序 LOL软件
  优点: 客户端可以任意的设计, 页面的展示能力就可以很强. 由于大量的资源都已经保存在了客户端, 和服务器交互的仅仅是一些变化的数据, 所以对网速的依赖很低
缺点: 第一次使用时需要下载客户端程序, 一旦程序需要升级操作, 所有的客户端程序都需要升级. 在有些场景中是不能被接受的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值