XML基础
XML概述
W3C组织简介
什么是XML
XML与HTML的比较
XML语法
文档声明
元素定义
一个元素中如果没有嵌套子元素,也没有包含文本内容,则这样的元素称为空元素,空元素可以不使用结束标记,例如:<img></img>可以简写成<img/>。
在XML文档中,元素的名称可以包含字母、数字以及其它一些可见的字符,但是在命名XML元素时,应该遵守以下规范: (1)区分大小写,例如:<P>和<p>是两个不同的标记。 (2)元素名称中,不能包含空格、冒号、分号、逗号和尖括号等,元素不能以数字开头,否则XML文档会报错。 (3)建议不要使用“.”,因为在很多程序语言中,“.”用于引用对象的属性。 (4)建议不要用减号(-),而以下划线(_)代替,以避免与表达式中的减号(-)运算符发生冲突。 (5)建议名称不要以字符组合xml(或XML、或Xml等)开头。 (6)建议名称的大小写尽量采用同一标准,要么全部大写,要么全部小写。 (7)名称可以使用非英文字符,例如中文,但有些软件可能不支持非英文字符以外的字符,在使用时应考虑这种情况。
属性定义
注释
特殊字符处理
在XML文档中,表示这些特殊字符的转义字符序列称为预定义实体。 &:&armp、<:<、>:>、":quot、':apos
CDATA区
DTD约束
什么是约束
DTD约束
DTD语法
文档声明
1.内部DTD,在XML文档内部嵌入DTD,只对当前 XML有效。 2.外部 DTD一本地 DTD ,DTD文档在本地系统上,公司内部自己项目使用 。 3.外部DTD一公共DTD ,DTD 文挡在网络上, 一般都有框架提供 。
元素定义
在DTD定义中,每一条<!ELEMENT…>语句用于定义一个元素,其基本的语法格式如下所示: <!ELEMENT 元素名称 元素内容> “元素内容”共有五种内容形式,具体如下: (1)#PCDATA:表示元素中嵌套的内容是普通文本字符串 (2)子元素:说明元素包含的元素 (3)混合内容:表示元素既可以包含字符数据,也可以包含子元素 (4)EMPTY:表示该元素既不包含字符数据,也不包含子元素,是一个空元素 (5)ANY:表示该元素可以包含任何的字符数据和子元素 在定义元素时,“元素内容”中可以包含一些符号,其中常见的符号具体如下: 问号[?]:表示该对象可以出现0次或1次。 星号[*]:表示该对象可以出现0次或多次。 加号[+]:表示该对象可以出现1次或多次。 竖线[|]:表示列出的对象中选择1个。 逗号[,]:表示对象必须按照指定的顺序出现。 括号[()]:用于给元素进行分组。
属性定义
设置说明 定义元素的属性时,有四种设置说明可以选择,具体如下: 1)#REQUIRED:表示元素的该属性是必须的 2)#IMPLIED:表示元素可以包含该属性,也可以不包含该属性 3)#FIXED:表示一个固定的属性默认值,在XML文档中不能将该属性设置为其它值。 4)默认值:和FIXED一样,如果元素不包含该属性,该属性将被自动设置为DTD中定义的默认值 属性类型 1)CDATA 这是最常用的一种属性类型,表明属性类型是字符数据,与元素内容说明中的#PCDATA相同。 2)Enumerated(枚举类型) 在声明属性时,可以限制属性的取值只能从一个列表中选择,这类属性属于Enumerated(枚举类型)。需要注意的是,在DTD定义中并不会出现关键字Enumerated。 3)ID 一个ID类型的属性用于唯一标识XML文档中的一个元素。其属性值必须遵守XML名称定义的规则。一个元素只能有一个ID类型的属性,而且ID类型的属性必须设置为#IMPLIED或#REQUIRED。 4)IDREF和IDREFS 5)NMTOKEN和NMTOKENS NMTOKEN是Name Token的简写,它表示由一个或者多个字母、数字、句点(.)、连字号(-)或下划线(_)所组成的一个名称。NMTOKENS关键字表示一种列表类型。一个元素的NMOTOKENS类型的属性设置值可以是同一个XML文件中的另外多个NMTOKEN类型的属性的设置值,每个NMTOKEN属性值之间用空格分隔。 6)NOTATION 通过设置NOTATION类型的属性来让一个外部应用程序进行处理。在DTD文件中,NOTATION定义语句分为两种情况,具体如下: 第一种情况:<!NOTATION 符号名 SYSTEM "MIME类型"> 第二种情况:<!NOTATION 符号名 SYSTEM "URL路径名"> 7)ENTITY和ENTITYS ENTITY对应的中文意思为实体,当某个属性的类型设置为ENTITY时,表明其属性值必须为在DTD中使用<!ENTITY …>语句定义的一个实体(entity)的引用。实体定义 引用实体 引用实体的定义方式如下所示: (1)<!ENTITY 实体名称 "实体内容"> (2)<!ENTITY 实体名称 SYSTEM "外部XML文档的URL"> 引用实体用于解决XML文档中内容重复的问题,其引用方式方法为: &实体名称; 参数实体 参数实体只能被DTD文件自身使用,它的语法格式如下所示: <!ENTITY % 实体名称 "实体内容"> 注意:在声明参数实体时,ENTITY、%、实体名和“实体内容”之间各有一个空格。 引用参数实体的方式是:%实体名称;Schema约束
什么是Schema约束
名称空间
名称空间就是用来处理元素和属性的名称冲突问题,与Java中的包是同一用途。如果每个元索和属性都有自己的名称空间,那么就不会出现名字冲突问题,就像是每个类都有自己所在的包一样,那么类名就不会出现冲突。
它可以唯一标识一个元素或者属性。声明名称空间的语法如下所示: <元素名 xmlns:prefixname="URI">Schema语法
元素定义
Schema和DTD一样,都可以定义XML文档中的元素。在Schema文档中,元素定义的语法格式如下所示: <xs:element name="xxx" type="yyy"/> element用于声明一个元素,xxx指的是元素的名称,yyy 指元素的数据类型。 在XML Schema 中有很多内建的数据类型,其中最常用的有以下几种: xs:string:表示字符串类型 xs:decimal:表示小数类型 xs:integer:表示整数类型 xs:boolean:表示布尔类型 xs:date:表示日期类型 xs:time:表示时间类型 XML的示例代码,具体示例如下: <lastname>Smith</lastname> <age>28</age> <dateborn>1980-03-27</dateborn> 这三个元素对应的Schema定义如下所示: <xs:element name="lastname" type="xs:string"/> <xs:element name="age" type="xs:integer"/> <xs:element name="dateborn" type="xs:date"/>
属性定义
在Schema文档中,属性定义的语法格式如下所示: <xs:attribute name="xxx" type="yyy"/> element用于声明一个元素,xxx指的是元素的名称,yyy 指元素的数据类型。 XML的简单例子,具体示例如下所示: <lastname lang="EN">Smith</lastname> 应的Schema定义方式如下所示: <xs:attribute name="lang" type="xs:string"/>
简单类型
(1)xs:minInclusive和xs:maxInclusive元素对值的限定 (2)xs:enumeration元素对一组值的限定 (3)xs:pattern元素对一系列值的限定 (4)xs:restriction元素对空白字符的限定 如果需要对空白字符(whitespace characters)进行处理,可以使用 whiteSpace元素。whiteSpace元素有三个属性值可以设定,分别是preserve、replace和collapse。
复杂类型
(1)空元素 指的不包含内容,只包含属性的元素,具体示例如下: <product prodid="1345" /> (2)包含其它元素的元素 (3)仅包含文本的元素 (4)包含元素和文本的元素
dom4j
XML解析概述
解析方式和解析器
DOM解析原理及结构模型
DOM 中的核心概念就是节点,在XML文档中的元素、属性、文本等,在DOM中都是节点!
API使用 1.如果需要使用dom4j,必须导入jar包。 2.dom4j必须使用核心类SaxReader加载xml文档获得 Document,通过Document对象获得文档的根元素,然后就可以操作了