XML
xml(可扩展标记语言)全称:eXtended Markup Language
可扩展的含义:允许程序员按照自己的想法去扩展新的标签.
但是扩展的时候,必须遵守XML规范(1-1)
xml特点:
1、自带描述性
2、可以支持跨平
3、保留了面向对象编程的层感.
编写xml的语法:
1、头,被称之为序言--包含了(文档声明 注释 空白).
2、文档元素--包含了(注释 空白 标签 内容).
例:
<UserBean>
<id type="int">1</id>
<userName type="string" length="20">张三</userName>
<age type="int">18</age>
<gender type="int">1</gender>
<address type="string" length="20">XXXXXXX</address>
<speed type="int" unit="second">11</speed>
</UserBean>
xml的文档声明:
<?xml version="1.0" encoding="UTF-8" Standalone="yes"?>
version="1.0" 版本信息,当前版本信息默认就是1.0不需要改变.
encoding="UTF-8" 表示文档采用的编码集是UTF-8.默认编码:Unicode
Standalone="yes" 表示文档是独立的,并没有引起其他任何外部文档.
顺序不能改变,例外就是要记住在xml中要严格区分大小写.
xml的注释:
<!-- 注释内容 -->以下几点需要注意:
1、注释不能放到xml的声明之前.
如错误写法:
<!-- -->
<?xml version="1.0" encoding="UTF-8"?>
2、注释需要严格遵循注释的语法,不能携程<-- -->、<!- -->、<!-- ->.
3、不要将注释放到标签中间去了.
注释作用:告诉xml解析器,不要解析被注释内容.
空白的使用:
在xml中,可以使用空格,字符表,回车等等的方式,让文档看起来更加直观.
xml的文档元素:
<开始标签>内容...</结束标签> 例如:<userName>张三</userName>
元素可以是整个文档中,最基本的数据存储单位,或者说最基本的逻辑单位
定义标签时-需要遵循一下规范:
1、标签名的定义,可以使用中文、英文、数字、下划线
但是名称必须使用字母、中文或者下划线开始----数字不能作为开头(建议不使用中文和下划线).
2、每个xml文档中,必须要有一个根标签,但是根标签内部可以去扩展很多的子标签.
3、每个xml文档中,至少需要存在一个标签元素,否则该文档就没有存在的含义.
4、定义标签名时,一定不能在名称中使用空格( )、冒号(:)、感叹号(!)、分号(;)等等其它符号.
5、定义标签名时,一定不要在名称中包含xml、XML、xml.、.xml等内容.
元素内容:
1、字符数据--所有的中英文、数字、(各种符号要注意:< > & "" ').
2、嵌套标签(元素)
3、实体(所谓的实体就是指< > & "" '的替代)
< 用 < 来代替.
> 用 > 来代替.
& 用 & 来代替.
" 用 " 来代替.
' 用 ' 来代替.
4、静态语句块:
<![CDATA[ 静态语句内容 ]]>
<!-- 静态语句块,作用:告诉xml解析器,我内务的内容,没有特殊的含义,就是一个普通的字符串-->
<![CDATA[ < > ; ! : & ' " ]]>
元素还可以添加属性:
属性的作用:进一步修饰该元素
定义属性名称的时候,也要遵循一定的规则:
1、属性名称可以包含字母、下划线、中文(但是不推荐中文). 一定不能在名称中使用空格( )、冒号(:)、感叹号(!)、分号(;)等等其它符号.
2、在同一个元素中,属性名不能重复.
3、属性名区分大小写.
4、定义标签名时,一定不要在名称中包含xml、XML、xml.、.xml等内容.
5、属性定义的方式,采用k-v键值对的方式进行定义,例如:type="string" 值必须要包含在""内 而且""必须成对出现.
DTD (Document Type Definition) Schema
xml的解析技术:DOM/SAX ----- 完成OXM Object-XML-Mapping
DOM 文档对象模型,采用树形结构来完成对文档的解析,它在解析的时候,会将整个文档加载内存中然后形成"节点树".
当文档内容过多,或者是需要解析的文档太多,此时可能会造成服务内存紧张的问题.
SAX 基于事件驱动模式下的文档解析技术.
DOM4J框架,提供了一套完整的针对于DOM,和SAX的解析技术 目前使用较为广泛.