一XML:可扩展的标记语言 eXtensive Markyp Language
HTML:超文本标记语言,做静态网页 HyperText Markup Language
标记语言:<标签名> </标签名>
可扩展:标签名是自定义的
XML和HTML的区别
(1)XML标签名是自定义的
HTML标签名是预定义的,由W3C组织预定好的 WorldWider Web Consortium
(2)HTML重点是用来显示数据,做静态网页的
XML重点是用来保存数据,传输数据,保存配置信息
二XML的作用
(a)XML用来保存数据,是轻量级的保存数据的方式
保存数据的规范统一,解析数据的方式统一
io/file保存数据
保存数据的规范不统一,解析数据的方式不统一
数据库保存数据,数据库不是一个轻量级的保存数据的方式
安装软件,启动软件,重点在操作数据
(b)XML是跨平台跨语言的一门技术,大部门主流的语言都支持XML(java,C,C++,PHP……)
(c)保存个性化连接(保存配置信息)
(d)重要文件web.xml,JavaEE的一个非常重要的配置文件,框架中也有很多xml文件
(e)在网络传输中也会使用xml数据
三:XML的语法
开始标签:<标签名>
结束标签:</标签名>
元素:由开始标签和结束标签组成的
元素内容:开始标签和结束标签中间的内容
元素内容可能出现的情况:
(1)元素内容是空内容------空元素
<name></name>也可以写成<name/>
(2)元素内容是字符内容:由字符,空字符,实体组成
<name>zhangsan</name>
(3)元素内容是另一个元素-----子元素
<stu><name>zhangsan</name></stu>
(4)元素内容由字符和子元素组成------混合元素
<stu>
<name>zhangsan</name>
</stu>
stu由name子元素和2个空白字符组成
四XML的语法规则
作用:XML的语法规则就是用来规定XML文件是一个良构的XML文件。
良构的XML文件:结构良好的XML文件
写一个XML文件必须要满足它是一个良构XML文件
(1)第一行必须写指令处理 <?xml ?>
在指令处理中可以写版本号:version=”1.0”,编码方式:encoding=””
(2)有且只有一个根元素
(3)元素的使用规则
1元素必须有开始和结束标签
2空元素<name/>
3属性必须放在开始标签中
(4)元素的嵌套规则
元素除了根元素必须嵌套在外围元素的开始和结束标签中
(5)元素和属性的命名规则
1以字母和下划线开头,由字母,下划线”_”,点号”.”,破则号”-“,数则组成的
2标签名区分大小写
3名字中不能出现空格
4不能使用W3C的保留字
(6)属性的使用规则
1属性是给元素添加额外的信息
2格式:属性名=属性值 属性是键值成对出现,有属性名必须添加属性值
3属性值需要用‘ ’,或者“ ”引起来
4属性必须放在元素的开始标签中
5一个元素可以有多个属性,多个属性之间用空格隔开,属性名必须唯一
五XML的注释
<!--注释内容-->
六PCDATA,CDATA,实体
PCDATA:可以被XML文档解析器解析,文档解释器:浏览器,SAX,DOM,DOM4j
但是有些字符想被解析,必须借助实体
CDATA:不可以被XML文档解析器解析 就是字符内容
格式:<![CDATA[显示的内容]]>
实体:用来替换一些东西,简化内容
定义实体:<!ENTITY实体名 实体内容>
使用实体:&实体名;
定义实体需要<!DOCTYPE>标签中
一个XML文件只有一个<!DICTYPE>标签,并且放在指令处理的下面
格式:<!DOCTYPE根元素[ //定义实体 ]>
定义混合元素的固定格式
(#PCDATA | 子元素1 | 子元素2)*
把属性定义成ID类型
属性值必须满足命名规则
属性值必须唯一
引入外部的DTD
<!DOCTYPE 根元素 SYSTEM “dtd文件的路径”>
SYSTEM:引入本地的DTD文件
PUBLIC:引入网络中的DTD文件
声明元素
<!ELEMENT 标签名 (内容模式)>
内容模式:EMPTY ANY Elements(包含子元素/标签) Mixed:混合元素
声明属性
<!ATTLIST 标签名 属性名 属性类型 属性默认值>
<!ATTLIST 标签名 属性名1 属性类型1 属性默认值1
属性名2 属性类型2 属性默认值2
……..>
1.JAXP
2.SAX解析:基于事件处理的机制进行解析,提供事件进行处理。
SAX解析器从xml文件的开头到结尾顺序解析,相当于扫描机。
碰到xml文件中的开始标签,结束标签,指令处理,文档解析结束都会触发相应的事件
程序员应该做的事情:提供相应的事件,并在事件中写相应的业务来哟机代码
SAX解析的步骤
第一种方式
获取SAX解析器的工厂对象 SAXParserFactory
从SAX解析器的工厂对象中获取SAX的解析器,SAXParser
使用SAX解析器解析XML文件
第二种方式
根据XMLReaderFactory获取XMLReader对象
创建继承了DefaultHandler的子类对象,传递给XMLReader对象
使XMLReader对象解析XML文件
3.DOM解析:基于Tree的处理机制进行解析。将XML文档全部载入到内存中并且转化成一棵Tree,记下来基于该Tree进行解析。是节点的集合。13种类型的节点
Documentnode:文档节点,代表的是整个XML文档,最大范围的节点
Elementnode:元素节点,<name>zhangsan</name>
Attributenode:属性节点 <name id=”1”/>
Textnode:文本节点 zhangsan
node是所有节点的父节点
DOM解析的步骤
1获取DON解析器的工厂对象
2从工厂对象中获取DOM解析器
3解析XML文档获取Document节点
4.DOM4J解析: