xml主要用来描述数据,好比配置文件,网络之间传输数据等,而且在android中也常常用xml来布局,,接下来便来学习xml经常使用的东西java
1.XML语法android
xml语法分为: 安全
1.1 文档声明网络
1.2 元素less
好比包含demo文本内容的title元素 :<title>demo</title>eclipse
不包含文本的元素:<title></title>函数
1.3 元素属性布局
好比:<person name="张三">post
1.4 注释学习
1.5 CDATA区
由于在XML元素中, 字符都会被解析器解析出来,像<>&" 这样的字符会被直接报错,示例以下图所示:
因此若是使用元素没法知足数据信息时,则能够经过CDATA来实现,CDATA通常用来存储函数方法,CSS.大量文本等,好比:
<![CDATA[ body { background: rgb(11,253,216); } ]]>
1.6 转义字符
因为在XML元素中, 使用<>&" 这样的字符会被直接报错,除了经过CDATA区替代外,咱们还能够经过转义字符来实现.
若要在元素中强制使用,须要转义的字符(包括;)有:
示例以下:
2.XML约束
若是xml格式出现出错,则程序将不能正确获取文件内容,为了保证数据的规范性和安全性,因此能够编写一个约束文档来约束xml的书写规范,约束文档能够规范xml中出现的指定元素名称,属性以及出现的顺序.
经常使用的约束有两种:
3.DTD约束
DTD 可被声明于 XML 文档中,也可做为一个外部引用。
3.1 声明于 XML 文档
若是内部使用,则能够直接在文档声明下面写.格式为"<!DOCTYPE 根元素名称 [ 约束内容 ]>"
示例以下:
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE persons [ <!ELEMENT persons (person+)> <!ELEMENT person (年龄,性别,其它信息)> <!ELEMENT 年龄 (#PCDATA)> <!ELEMENT 性别 (#PCDATA)> <!ELEMENT 其它信息 (#PCDATA)> <!ATTLIST person 姓名 ID #REQUIRED 国籍 (中国|外国) #IMPLIED 特色 CDATA "吃睡学习" 动物级别 CDATA #FIXED "高级动物" > <!ENTITY zhangsanMsgUrl "person/id43645.com"> ]> <persons> <person 姓名="zhangsan" 国籍="中国" > <年龄>21</年龄> <性别>男</性别> <其它信息>zhangsanMsgUrl </其它信息> </person> <person 姓名="lisi" 特色="吃喝玩乐" > <年龄>21</年龄> <性别>男</性别> <其它信息> person/id9945.com </其它信息> </person> </persons>
上面的示例,出现了!ELEMENT、!ATTLIST、#REQUIRED等等DTD约束的关键字,接下来咱们便来看看这些关键字的做用
!ELEMENT-元素定义
ELEMENT关键字用来声明一个XML元素,语法:<!ELEMENT 元素名称 (使用规则)>
使用规则说明:
!ATTLIST-属性定义
ATTLIST关键字用来约束某个元素的属性信息语法:
<!ATTLIST 元素名称 属性名 属性值类型 约束 属性名 属性值类型 约束 ...... >
属性值类型说明
约束说明
3.2 DTD做为外部引用
若是在xml中要使用外部文件的DTD约束,则须要在声明下面写入声明的根元素名以及DTD文件名,格式为"<!DOCTYPE 根元素名称 SYSTEM "文件名称.dtd">"
示例,将3.1的内部使用改成外部引用 persons.xml文件以下:
<?xml version="1.0" encoding="utf-8"?> "<!DOCTYPE persons SYSTEM "persons.dtd">" <persons> <person 姓名="zhangsan" 国籍="中国" > <年龄>21</年龄> <性别>男</性别> <其它信息>zhangsanMsgUrl </其它信息> </person> <person 姓名="lisi" 特色="吃喝玩乐" > <年龄>21</年龄> <性别>男</性别> <其它信息> person/id9945.com </其它信息> </person> </persons>
persons.dtd文件以下:
<!ELEMENT persons (person+)> <!ELEMENT person (年龄,性别,其它信息)> <!ELEMENT 年龄 (#PCDATA)> <!ELEMENT 性别 (#PCDATA)> <!ELEMENT 其它信息 (#PCDATA)> <!ATTLIST person 姓名 ID #REQUIRED 国籍 (中国|外国) #IMPLIED 特色 CDATA "吃睡学习" 动物级别 CDATA #FIXED "高级动物" > <!ENTITY zhangsanMsgUrl "person/id43645.com">
4.Schema约束
4.1 示例-建立personSchema.xsd
在eclipse中,点击File->new->other,而后建立XML Schema File文件,名字为personSchema.xsd.内容以下:
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.example.org/personSchema" targetNamespace="http://www.example.org/personSchema" elementFormDefault="qualified"> <!--讲解1--> <xs:element name='persons'> <!--约束xml根元素为persons--> <xs:complexType> <!--complexType:定义persons为复合元素--> <xs:sequence maxOccurs='unbounded '> <!--讲解2--> <xs:element name='person'> <!--约束persons下的子元素名字必须为person--> <xs:complexType> <xs:sequence> <!--sequence:必须按照顺序实现:先有姓名,最后年龄.--> <xs:element name='姓名' type='xs:string' /> <xs:element name='性别' type='xs:string' /> <xs:element name='年龄' type='xs:string' /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
讲解1:
xmlns:xs=http://www.w3.org/2001/XMLSchema
xmlns=http://www.example.org/personSchema
targetNamespace="http://www.example.org/personSchema"
讲解2:
<xs:sequence maxOccurs='unbounded'>
4.2 示例-建立对应的XML
而后在eclips中点击 File->new->other,而后建立XML文件,名字为person.xml,而后点击next,而后选择建立基于schema的XML:
再选择咱们刚刚写好的personSchema.xsd:
而后设置文件名为person.xml,且内容以下:
<?xml version="1.0" encoding="UTF-8"?> <p:persons xmlns:p="http://www.example.org/personSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.org/personSchema personSchema.xsd "> <p:person> <p:姓名>p:张三</p:姓名> <p:性别>p:男</p:性别> <p:年龄>p:22</p:年龄> </p:person> <p:person> <p:姓名>p:李四</p:姓名> <p:性别>p:男</p:性别> <p:年龄>p:17</p:年龄> </p:person> </p:persons>
xmlns:p="http://www.example.org/personSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.org/personSchema personSchema.xsd ">
4.3 验证
以下图所示,假如咱们不按照personSchema.xsd约束来写XML,则直接出现error:
未完待续,下章学习java解析xml