XML

XML基础 XML扩展 XML验证:DTD
 Xml详细介绍
 XML的设计目标是描述数据并集中与数据的内容。
 XML标记可以自定义。
 XML具有错误验证机制
 XML区分大小写
 XML标记的属性必须用“”或者‘’括起来
 XML的强项
 轻松表达多层结构的数据
 可自由扩展
 主要用途:
 数据描述,数据交换
 优点:平台无关,语言无关
 软件系统之间通过标准的XML API读写XML格式的文档,从而完成数据交换的任务。
 XML细节
 标记
 在< >中的称为开始标记
 在</ >中的称为结束标记
 不包含元素的标记称为空标 记如:<eric age=“80”/>
 元素
 开始标记与结束标记间的内容称为元素。
 属性
 下面的这个是属性:
 <eric age=“80”>
 ……
 </eric>
 文本
 <eric age=“80”>
 Eric真是个好人啊!
 </eric>
 总体例子

 XML声明
 <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
 大多数XML文档以XML声明作为开始,它向解析器提供了关于文档的基本信息。
 建议使用XML声明,但它不是必需的。如果有的话,那么它一定是文档的第一行内容。
 为支持中文可以用utf-8,或者gb2312
 XML声明
 声明最多可以包含三个名称-值对(许多人称它们为属性,尽管在技术上它们并不是)。
 1)version 是使用的XML 版本:1.0,1.1
 2)encoding 是该文档所使用的字符集。
 该声明中引用的ISO-8859-1 字符集包括大多数西欧语言用到的所有字符。
 如没有指定encoding,XML 解析器会假定字符在UTF-8 字符集中,这是一个几乎支持世界上所有语言的字符和象形文字的Unicode 标准。
 3)standalone(可以是yes 或no)定义了是否可以在不读取任何其它文件的情况下处理该文档。
 如果XML文档没有引用任何其它文件,则可以指定standalone="yes"。
 如果XML文档引用其它描述该文档可以包含什么的文件,
 则可以指定standalone=“no”。缺省值为standalone="no"
 注释
 注释可以出现在文档的任何位置;它们甚至可以出现在根元素的前面或后面。
 注释以<!--开始,以--> 结束。
 注释不能在结束部分以外包含双连字符(--);除此之外,注释可以包含任何内容。
 注释内的任何标记都被忽略
 不要把注释放到某个节点的部分
 实体
 XML 规范预定义了五个实体。
 < 代表小于符号 <
 > 代表大于符号 >
 " 代表一个双引号 ”
 &apos; 代表一个单引号(或撇号)‘
 & 代表一个“与”符号。&
 引用实体时一定是&开头,和;结尾
 当然我们也可以进行自定义实体,
 可以用浏览器或者eclips(需要插件)进行测试是否写对了
 自定义实体(放在XML的声明后面和根结点前面,比如下例中为message)

 CDATA
 引用无格式内容(也就是说此时XML解释器对此段内容不做任何解释。因此也不要加任何实体符号)

 语法规则
 除空标记外,标签必须成对。
 一份文档必须包含一个根元素。
 所有的开始标签和结束标签必须匹配。
 空标签必须以“/>”结束。
 标签必须嵌套正确。
 元素名称大小写敏感。
 所有的属性值必须位于单引号或双引号中。
 每一个元素的属性不允许出现超过一次。

 XML工具
 MyEclips的插件管理,不过有个bug,提示错误但是实际上没有错误,需要关闭再打开,看是否有错误。
<?xml version="1.0" encoding="UTF-8"?>
<!-- 以下是一个自定义实体 -->
<!DOCTYPE user
[
<!ENTITY my "hello">
<!ENTITY you "you hello">
]>
<user>
<head>Dear mother &my;
</head>
<body> test 2 < 3
</body>
<te>
<!-- 这是一个测试程序 -->
testDemo is a textlist
</te>
<!-- 属性值必须用引用括起来 -->
<city name ="guangzhou"></city>
<!-- 引用无格式内容引用无格式内容 -->
<![CDATA[
public static void main(String [] args){
System.out.println("this is a demo");
}
]]>
<fi> &you;</fi>
</user>
 对应的DTD
<!ELEMENT user (head,body,te,city,fi)>
<!ELEMENT head (#PCDATA)>
<!ELEMENT body (#PCDATA)>
<!ELEMENT te (#PCDATA)>
<!ELEMENT city (#PCDATA)>
<!ELEMENT fi (#PCDATA)>
<!ATTLIST city name CDATA #REQUIRED>
 XML验证
 扩展:得到自己的专用语言
 验证:通过对扩展语言规范的学习,对一个特定的xml文件按此规范进行解释识别,看此xml是否正确。
 DTD验证
 文档类型定义(Document Type Definition)
 DTD定义了XML文档内容的结构,保证XML以一致的格式存储数据。
 精确的定义词汇表,对XML的内容施加约束。
 XML允许用户为应用程序创建自己的DTD。
 可以依据DTD来检查XML文档。这种检查过程被称为验证。
 与DTD相符合的XML文档被认为是有效的文档。
 通过DTD定义的词汇表以及文档语法,XML解析器可以检查XML文档内容的有效性。

 DTD四种标记声明
 元素(ELEMENT)
 XML元素类型声明
 <!ELEMENT elementName(contentModel)>
 元素的内容模式
 元素的内容通过内容模式来描述。DTD 内容模式的种类有:
EMPTY
#PCDATA
ANY
Elements
Mixed
 EMPTY
 元素不能包含任何数据,但可以有属性(前提是必须声明其属性)。
 不能有子元素。
 不能有文本数据(包括空白)。

 #PCDATA
 PCDATA
 Parsed Character Data.
 The text that will be parsed bya parser .
 规定元素只包含已析的字符数据,而不包含任何类型的子元素的内容类型
 ANY
 元素可以包含任何类型的数据。子元素(必须在DTD中有定义)文本数据(包括空白)

 Elements
 元素由内容模式部件指定。

 Mixed
 所谓混合模式是指子元素中既可有文本数据又可有下级子元素。
 <!ELEMENT review (#PCDATA|name)*> 此时表示同时出现
 Any表示只能出现一个,而mixed可以出现多种类型

 属性(ATTLIST)
 特定元素类型可设置的属性&属性的允许值声明
 在DTD中,可用如下语法声明元素的属性列表:
 <!ATTLIST elementName attributeName attributeType >
 attributeType

 attributeDefault





 实体(ENTITY)
 可重用的内容声明
 符号(NOTATION)
 不要解析的外部内容的格式声明。
XML解析 与JAVA
 XML与Java
 XML中内容的一般存放在属性和文本之间。我们可以根据DTD中信息进行定位,读取我们想用的信息。
 XML处理模式
 文档对象模式
 DOM:比较吃内存,一般够用
 基于事件处理模式
 SAX:省内存
 DOM特点
 以树型结构访问XML文档。
 一棵DOM树包含全部元素节点和文本节点。
 可以前后遍历树中的每一个节点。
 整个文档树在内存中,便于操作;支持删除、修改、重新排列等多种功能。
 将整个文档调入内存(包括无用的节点),浪费时间和空间。
 一旦解析了文档还需多次访问这些数据;硬件资源充足(内存、CPU)情况下使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值