XML简介
xml是一门可扩展标记语言,英文名eXtensible Markup Language.XML和HTML有一定的相似之处,都是标记语言,这意味着这两门语言都是通过标记来进行编写代码的。但是也有很多的不同,html里面的标签是固定的,每个标签都有特定的含义。而xml里面的内容是可以自定义的。和HTML一样,xml也可以用来显示数据,和CSS一起使用等等,但是它的主要功能是存储数据,经常使用在配置文件当中。
XML语法
首先我们要先新建一个xml文件,后缀名为.xml
xml文件的第一行是固定的,为<?xml version="1.0" encoding="UTF-8"?> 这里的version是指版本号,一般我们使用的是1.0版本,当然也有其他版本,但是我们一般不用,因为各个版本之间不兼容。encoding是指指定编码集,还有一个属性是standalone,指的是是否需要依赖其他文件,值为yes/no.
xml中的标签有头必须要有尾,如<person> </person>
在xml是区分大小写的,标签名称不能以下滑线和数字开头,标签不能以xml开头,不能包含空格和冒号
在xml中,特殊符号是需要转义的,如 >:< <:> ":" &:& ':' 等等
如果有多个转移字符,我么可以将其放在CDATA区,格式如下:<![CDATA[ 内容 ]]>,PI指令可以为xml设置样式
注释,xml的注释和html一样,为<!-- --> ,注释里面不能包含注释
约束:是指为xml设置一个模板,xml里面的定义需要按照模板来进行书写,其中约束分为DTD和SCHEMA两种
DTD
xml中引入dtd的三种方式:
1.引入外部的dtd文件,格式如下
<!DOCTYPE 根元素名 SYSTEM "src">
其中src是指dtd文件的路径
2.内部的dtd文件
<!DOCTYPE 根元素名 [
dtd代码
]>
3.使用网络上的dtd文件
<!DOCTYPE 根元素名 PUBLIC "DTD名称" "DTD文件的url路径">
dtd的语法
dtd里面的元素分为简单元素和复杂元素,简单元素是指没有子节点的元素,复杂元素是由子节点的元素,定义这两种元素的规范不同,复杂元素的定义规范为<!ELEMENT 元素名 (子元素1,子元素2,...)> ,其中括号里面的逗号表示的是按顺序进行编写,而逗号还可以改成 | 竖线 ,表示的是只能出现其中的一个,这与正则表达式相联系,子元素还可以修饰为 +,*,?等,也是与正则表达式相对应
dtd的属性类型
<!ATTLIST 元素名称 属性名称 属性类型 属性的约束>
属性类型
CDATA:字符串
<!ATTLIST birthday
ID1 CDATA #REQUIRED
>
枚举类型:(男|女)
<!ATTLIST sex
ID2 (男|女) #REQUIRED
>
ID类型:值只能是字母或者下划线开头
<!ATTLIST age
ID3 ID #REQUIRED
>
属性的约束
#REQUIRED:必须要有
#IMPLIED:可有可无
#FIXED:一个固定值
直接值:如果定义的时候不定义则默认为这个直接值
xml的解析
xml的解析分为dom和sax
dom:根据xml的层级结构在内存中分配一个树形结构,然后封装成对象,文件过大会造成文件溢出,但是容易实现增删改
sax:采用事件驱动,边读边解析,从上到下,一行一行的解析,解析到某一个对象,把对象名返回
但是不能实现增删改操作
xml的解析器
sun公司:jaxp
dom4j组织:dom4j
jdom组织:jdom
待续....