xml
来源:互联网 发布:qq刷皇冠软件 编辑:程序博客网 时间:2024/06/02 04:14
标记语言
标记语言,是一种将文本(Text)以及文本相关的其他信息结合起来,展现出关于文档结构和数据处理细节的电脑文字编码。当今广泛使用的标记语言是超文本标记语言(Hyper Text Markup Language,HTML)和可扩展标记语言(eXtensible Markup Language,XML)。标记语言广泛应用于网页和网络应用程序。
1)超文本标记语言HTML(Hyper Text Markup Language)
写法格式:<a href="link.html">link</a>
关注数据的展示与用户体验
标记是固定的,不可扩展(如<a></a>表示超链接)
2)可扩展的标记语言XML(eXtensible Markup Language)
写法格式:同html样式<a>link</a>
仅关注数据本身
标记可扩展,可自定义
3)Xml和Html语言由同一种父语言SGML(Standard Generalized Markup Language,标准通用标记语言)发展出来的两种语言
4)解析器
专用解析器(比如:XML SPY专用于解析XML文件)
浏览器
MyEclipse
5)W3C(World Wide Web Consortium)
W3C:开源的语言协会,万维网联盟(World Wide Web Consortium)
HTML和XML都是W3C制定的语言规则
官网:http://www.w3.org
学习网站:http://www.w3school.com.cn/
XML语法规则
1.xml的声明:
<?xml version="1.0" encoding="gb2312"?>
1) ?和xml之间不能有空格
xml的声明必须写在文件第一行
Encoding(字符集)属性可以省略,默认的字符集是utf-8
2)声明必须顶头写,不能有空行或空格
3)等号左右不要多写空格
浏览器不会报错,但是在xml解析时会出问题
2.标记
1)诸如<书名></书名>这样格式的被称为标记,标记成对出现
2)标记包括开始标记和结束标记
3.元素(Element)
1)元素:元素包括标记和其中的内容
2)根元素:最外层的元素叫根元素
3)叶子元素:最里层的(没有子元素的)元素叫叶子元素
4)空元素:没有内容的元素叫空元素,比如<a></a>,可以简写为:<a/>
5)元素必须遵循的语法规则
所有的标记都必须有结束
开始标记和结束标记必须成对出现
元素必须正确嵌套
<a><b>c</b></a> (正确)
<a><b>c</a></b> (错误)
标记的大小写敏感Hello和hello不是同一个标记
有且只能有一个根元素
4.实体引用(转义字符)
1)小于号(<):less than --> <
2)大于号(>):great than -->>
3)And符号(&):&
4)双引号("):"
5)单引号('):'
5.属性(定义在开始标记中的键值对)
1)格式:属性="属性值"
2)要求:
属性必须有值
属性值必须用引号引起来,单引号或双引号都可以,但必须一致
武侠小说的属性有2组:isbn号码、是否热销标记
计算机书籍的属性有1组:isbn号码
6.CDATA类型的数据:特殊标签
1)格式:<![CDATA[文本内容]]>
2)特殊标签中的实体引用都被忽略,所有内容被当成一整块文本数据对待
注:CDATA表示是一整块,其中包括的特殊字符,比如<<不是全角的《
7.注释(xml和html相同)
1)<!--这是一段注释-->
2)编译器将忽略注释
3)Html和Xml注释方式相同
8.规则小结
1)必须有唯一的根元素
2)xml标记大小写敏感
3)标记必须被正确嵌套
4)属性必须有值,值必须用引号引起来
5)如果遵循所有的规则,称作格式良好的xml文件(well-formed)
9.使用XML文件描述数据的例子
1)早期属性文件描述数据的方式
url= jdbc:oracle:thin@192.168.0.26:1521:tarena
dbUser = openlab
dbPwd = open123
2)现在使用xml表示方式
<datasource id="db_oracle">
<property name="url">jdbc:thin@192.168.0.26:1521:tarena</property>
<property name="dbUser">openlab</property>
<property name="dbPwd">open123</property>
</datasource>
DTD/Schema
1)DTD/Schema:用来规范XML的标记规则
2)有效的xml文件(valid xml file)=格式良好的xml文件+有DTD或Schema规则+遵循DTD或Schema的规则
1.DTD/Schema的由来
行业交换数据时要求xml文件格式相同,所以需要大家遵守规范的xml文件格式,比如两份xml文件要有相同的元素嵌套关系,相同的属性定义,相同的元素顺序,元素出现相同的次数等。
如下为两份相同数据量,但是结构不同的xml文件,如图所示:
这两个文件数据相同,但结构不同,无法交换数据
2.文档类型定义DTD(Document Type Difinition)
1)DTD文档用来定义XML文件的格式,约束XML文件中的标记规则
2)DTD类型
PUBLIC(行业共用的)
SYSTEM(小范围自定义的)
3)DTD中的定义规则
元素
出现一次而且有顺序的元素:书名,作者,价格,册数,简介
“*”星号: 表示出现0-n次的元素
“+”加号: 表示出现1-n次的元素
“|”: 表示或(只能出现一次)比如(phone|mobile)表示固话或手机二选一
(phone|mobile)*:表示phone或mobile可出现任意多次
“?”问号: 表示出现0或1次
属性(Attribute)
定义在开始标记中的键值对
4)DTD规则_属性(Attribute)
<!ATTLIST 标记名称 属性名称 属性类型>
isbn CDATA #REQUIRED: 表示isbn属性是必须的
isbn CDATA #IMPLIED: 表示isbn属性不是必须的
hot CDATA "false": 表示hot的默认值是false,如果属性hot定义了值,
取此定义好的值,如果没定义,取值true
3.Schema
1)命名空间(NameSpace)XML文件允许自定义标记,所以可能出现来自不同源DTD或Schema文件的同名标记,为了区分这些标记,就需要使用命名空间。
命名空间的目的是有效的区分来自不同DTD的相同标记
比如如下xml文件中使用了命名空间区分开“表格”和“桌子”:
<html:table>
<line><column>这是一个表格</column></line>
</html:table>
<product:table>
<type>coffee table</type>
<meterial>wood</meterial>
</product:table>
2)因为DTD无法解决命名冲突,所以出现Schema,它是DTD的替代者,dtd和schema的功能都是用于描述XML结构的
3)Schema支持命名空间,使用xml语法实现(Schema本身就是xml文件)因为用于规范和描述xml文件的定义文件(schema)本身也是xml文件,所以xml也被称作是自描述的语言
4)Schema文件的扩展名xsd:Xml Schema Difinition(简称XSD,遵循W3C标准)
5)Schema中的名词:
复杂元素(有子元素的元素)
简单元素(叶子元素)
4.java API解析XML文件(读xml文件)
1)java与xml有很多共同点(比如跨平台,与厂商无关),目前为止java对xml的解析较其他语言更完善
2)两种解析方式:
DOM(Document Object Model文档对象模型)
关键字:树(Document)
优点:把xml文件在内存中构造树形结构,可以遍历和修改节点
缺点:如果文件比较大,内存有压力,解析的时间会比较长
SAX(Simple API for Xml基于XML的简单API)
关键字:流(Stream)
把xml文件作为输入流,触发标记开始,内容开始,标记结束等动作
优点:解析可以立即开始,速度快,没有内存压力
缺点:不能对节点做修改
3)JDOM/DOM4J:目前市场上常用的2种解析XML文件的API
dom4j-1.6.1.jar 结合了DOM和SAX两种解析方式的优点
工程结构图:
结果展示:
- XML
- XML
- XML
- XML
- xml
- xml
- XML
- XML
- XML
- xml
- xml
- XML
- XML
- xml
- xml
- xml
- XML
- XML
- 为什么文件名不能包含下列任何字符 \/:*?“<>|
- CentOS下搭建DNS服务器
- 基因芯片筛选差异表达基因方法比较
- ACM(029)求转置矩阵问题(2)
- Struts2详细课件
- xml
- “java memcached client 过期”存储加入“有效期”,切记
- android webview 屏蔽双击放大功能
- Python基础教程笔记——列表和元组
- win7下实现利用命名管道实现网络通信
- linux ln 命令与 ubuntu "Make Link" 区别
- Oracle SQL Loader的详细语法
- 面向对象的3个基本要素和5个基本设计原则(整理)
- 大数据导论之为何需要引入大数据