数据格式–XML
第一部分:xml的介绍
1.什么是XML
XMl是可扩展标记语言的英文简称,它的特点是可以由用户自定义。
2.xml的用途
xml的作用主要分为两个部分:一是用作配置文件,二是用于传输数据。
3.xml的语法
1.xml文档声明
<?xml version="1.0" encoding="utf8"?>
注:1.文档声明中必须要以<?xml开头,?>结尾。
2.文档声明必须从文档的0行0列位置开始。
3.文档声明的必须属性为:version,其值一般为1.0;而encoding是可选属性,值一般是utf8。
2.元素内容
1.元素是由开始标签,元素体,结束标签一起组成。如:<name>wgy</name>.
2.一个xml文档,要有一个根元素。
3.元素体可以是元素,也可以是文本。
3.属性内容
1.属性是元素的一部分,它必须要出现在元素的开始标签中。
2.属性的定义格式:属性名=属性值,其中的属性值要用引号将它包裹。
3.一个元素中,属性名不能同名。
注:在xml文档中,如果出现大量的转义字符,可以使用
第二部分:XML的约束
常见的xml约束:DTD约束,Schema约束
一.DTD约束
1.什么是DTD约束
DTD约束就是,文档类型定义,它是用来约束xml文档的;它规定了xml文档中的元素名称,子元素的名称以及顺序,元素体的内容,元素的属性等等。
2.DTD的实际应用
一般在开发中,自己编写DTD约束比较少,一般是通过引入DTD约束文档来编写相应的xml文档。
3.DTD文档的引入
1.可以通过在xml文档中嵌入DTD约束,只对当前xml文档有效。
<!DOCTYPE web-app [
DTD语法
]>
2.可以在外部引入DTD约束。
2.1.可以使用<!DOCTYPE web-app SYSTEM "web-app_2_3.dtd">引入位于同一目录下的DTD约束文档。
2.2.可以使用<!DOCTYPE web-app PUBLIC "-//Sun Microsystems,Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">引入位于网络上的dtd约束文档。
4.DTD的语法
4.1元素声明:
<!ELEMENT 元素名 元素描述>
元素名:自定义
元素描述:
常见类型:? * + () |
常见类型:#PCDATA表示元素体只能是文本,不能是子标签。
4.2属性声明:
<!ATTRIST 元素名
属性名 属性类型 约束
属性名 属性类型 约束
...
>
元素名:自定义
属性类型:
ID :ID类型的属性用来标识元素的唯一性
CDATA:文本类型
约束:
#PEQUIRED:说明属性是必须的
#IMPLIED:说明属性是可选的
---->DTD实例:
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT web-app (servlet*,servlet-mapping* , welcome-file-list?) >
<!--
<!ELEMENT web-app (servlet*,servlet-mapping* , welcome-file-list?) >
表示在web-app标签下面有三个子标签,而且要按照顺序出现
1.servlet:*代表着数量是任意的。
2.servlet-mapping:*代表着数量是任意的。
3.welcome-file-list:?代表着数量是1或者0
-->
<!ELEMENT servlet (servlet-name,description?,(servlet-class|jsp-file))>
<!--
<!ELEMENT servlet (servlet-name,description?,(servlet-class|jsp-file))>
表示在servlet标签下面有三个子标签,而且要按照顺序出现
1.servlet-name:必须要出现并且只能出现一次
2.description:?代表着数量是1或者0
3.(servlet-class|jsp-file):servlet-class或者jsp-file二选一,只能出现0或1次
-->
<!ELEMENT servlet-mapping (servlet-name,url-pattern+) >
<!--
<!ELEMENT servlet-mapping (servlet-name,url-pattern+) >
表示在servlet-mapping标签下面有两个子标签,而且要按照顺序出现
1.servlet-name:必须要出现并且只能出现一次
2.url-pattern+:+代表着至少要出现一次
-->
<!ELEMENT servlet-name (#PCDATA)>
<!--
<!ELEMENT servlet-name (#PCDATA)>
设置servlet-name元素体中的内容只能为文本类型。
-->
<!ELEMENT servlet-class (#PCDATA)>
<!ELEMENT url-pattern (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT jsp-file (#PCDATA)>
<!ELEMENT welcome-file-list (welcome-file+)>
<!ELEMENT welcome-file (#PCDATA)>
<!ATTLIST web-app version CDATA #IMPLIED>
<!--
<!ATTLIST web-app version CDATA #IMPLIED>
为web-app元素设置属性,属性名为version,类型为文本,是可选的
-->
二.Schema约束
1.什么是schema约束
schema约束是新的xml文档约束
schema要比DTD强大很多,是DTD的替代者。
schema本身也是xml文档,但是schema文档扩展名为xsd,而不是xml
schema功能更加强大,数据类型更加完善
schema支持名称空间
第三部分:解析XMl
在编写好xml文档后,为了要获取xml的内容,需要将xml解析。
1.xml的解析方式:
DOM解析,SAX解析,PULL解析。
2.DOM解析方式
原理:xml dom和html dom类似,xml dom将整个xml文档加载到内存中,生成一个DOM树,并且获取一个Document对象,然后通过Document对象来对DOM进行操作。
3.Dom4j的核心类
1.SaxReader对象
a.read()加载xml文档
2.Document对象
a.getRootElement()获得根元素
3.Element对象
a.elements(..)获得指定名称的所有子元素,可以不指定名称
b.element(..)获得指定名称的第一个字元素,可以不指定名称
c.getName()获得当前元素的元素名
d.attributeValue(..)获得指定属性名的属性值
e.elementText(..)获得指定名称子元素的文本值
f.getText()获得当前元素的文本内容