结构化文件存储

XML

XML(eXtensibleMarkupLanguage),可扩展标记语言

  • 标记语言,语言中使用尖括号括起来的文本字符串标记

  • 可扩展:用户可以自己定义需要的标记

  • 例如:

    <Teacher>
    	自定义标记Teacher
    	在两个标记之间任何内容都应该跟Teacher相关
    </Teacher>
    
  • 是W3C组织指定的一个标准

  • XML描述的是数据本身,即数据的结构和语义

  • HTML侧重于如何显示web页面中的数据

XML文档的构成

  • 处理指令(可以认为一个文件内只有一个处理指令)
    • 最多只有一行,且必须在第一行
    • 内容是与XML本身处理器相关的一些声明或者指令
    • 以XML关键字开头
    • 一般用于声明XML的版本和采用的编码
      • version 属性是必须的
      • encoding 属性用来指出XML解释器使用的编码
  • 根元素(一个文件内只有一个根元素)
    • 在整个XML文件中,可以把根元素看作一个树状结构
    • 根元素有且只能有一个
  • 子元素
  • 属性
  • 内容
    • 表明标签所存储的信息
  • 注释
    • 起说明作用的信息
    • 注释不能嵌套在标签内
    • 只有在注释的开始和结尾使用双短横线
    • 三短横线只能出现在注释的开头而不能用在结尾
    <name> <!--wangdapeng-->   </name> #可以
    <name <!-- wangdapeng-->>   </name> #不可以,注释在标签内
    
    <!--my-name-by-wang-->  #可以,注释内容可以有一个短横线
    <!--my--name--by--wang-->  #不可以,双短横线只能出现在开头或结尾
    
    <!---my-name--> #可以,三短横线只能出现在开头
    <!---my-name---> #不可以,三短横线只能出现在开头
    

保留字符的处理

  • XML中使用的符号可能跟实际符号相冲突,典型的就是左右尖括号

  • 使用实体引用(EntityReference)来表示保留字符

    <score> score>80 </score> #有错误,xml中不能出现>
    <score> score&gt;80</score> #使用实体引用
    
  • 把含有保留字符的部分放在CDATA块的内部,CDATA块把内部信息视为不需要转义。

    <![CDATA[
    	select name,age
    	from Student
    	where score>80
    	]]>
    
  • 常用的需要转义的保留字符和对应的实体引用

    • &:&amp;
    • <:&lt;
    • >:&gt;
    • ':&apos;
    • ":&quot;
    • 一共5个,每个实体引用都以&开头并且以分号结尾

XML标签的命名规则

  • Pascal命名法
  • 用单词表示,第一个字母大写
  • 大小写严格区分
  • 配对的标签必须一致

命名空间

  • 为了防止命名冲突
<Student>
	<Name>YingYU</Name>
	<Age>23</Age>
</Student>
<Room>
	<Name>2018</Name>
	<Location>1-23-1</Location>
</Room>
  • 假设把上述代码两个内容信息归并,name属性就会产生冲突
<School>
	<Name>YingYU</Name>
	<Age>23</Age>

	<Name>2018</Name>
	<Location>1-23-1</Location>
</School>
  • 为了避免冲突,需要给可能冲突元素添加命名空间
  • xmlns:xml name space 的缩写
<School xmlns:student
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值