文章目录
一、概念:
XML指可扩展标记语言(EXtensible Markup Language),XML没有预定义标签,需要自行定义标签。
二、功能:
存储数据,在开发中经常使用到:
1. 配置文件
2. 在网络中传输
三、xml与html的区别:
1. xml标签都是自定义的,html标签是预定义。
2. xml的语法严格,html语法松散
3. xml是存储数据的(传输),html是展示数据(显示)
四、xml语法:
<?xml version='1.0' encoding='utf-8' ?> //第一行必须写这种文档申明,如不声明编码格式,默认值encoding:ISO-8859-1(不支持中文)
<user>
<user id='1'> //属性值必须使用引号(单双都可)引起来
<name>wangda</name>
<age>22</age>
<gender>male</gender>
</user>
<user id='2'> //id属性值唯一
<name>wanger</name>
<age>13</age>
<gender>female</gender>
</user>
<![CDATA[数据展示区域]]>
</user> // xml文档中有且仅有一个根标签
注意:
指令(了解):结合css的: <?xml-stylesheet type="text/css" href="a.css" ?>
文本:CDATA区,在该区域的文本会被原样显示:<![CDATA[ 数据 ]]>
五、约束:
作为框架的使用者(程序员),需要根据框架的约束文档(规定xml文档的书写规则),来写xml配置文件。步骤:
1.引入框架开发者撰写的约束文档;
2.读懂约束文档;
3.根据约束文档编写相关的xml文档。
六、约束文档分类:
1. DTD:一种简单的约束技术
student.dtd约束文档
<!ELEMENT students (student*) >
<!ELEMENT student (name,age,sex)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
<!ATTLIST student number ID #REQUIRED>
根据dtd约束文档撰写的student.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE students SYSTEM "student.dtd"> //此处是本地引用dtd约束文档,网络格式为:<!DOCTYPE 根标签名 PUBLIC "dtd文件名字" "dtd文件的位置URL">
<students>
<student number="001">
<name>wangda</name>
<age>28</age>
<sex>male</sex>
</student>
</students>
2. Schema:一种复杂的约束技术
jiao较dtd约束而言,Schema限定了每个标签对中的属性的范围,如规定name必须为字符型。
Schema的约束文档student.xsd如下:
<?xml version="1.0"?>
<xsd:schema xmlns="http://www.itcast.cn/xml"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.itcast.cn/xml" elementFormDefault="qualified">
<xsd:element name="students" type="studentsType"/>
<xsd:complexType name="studentsType">
<xsd:sequence>
<xsd:element name="student" type="studentType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="studentType">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="age" type="ageType" />
<xsd:element name="sex" type="sexType" />
</xsd:sequence>
<xsd:attribute name="number" type="numberType" use="required"/>
</xsd:complexType>
<xsd:simpleType name="sexType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="male"/>
<xsd:enumeration value="female"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ageType">
<xsd:restriction base="xsd:integer">
<xsd:minInclusive value="0"/>
<xsd:maxInclusive value="256"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="numberType">
<xsd:restriction base="xsd:string">
<xsd:pattern value="heima_\d{4}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
根据student.xsd约束文档写的student.xml文档。今后在使用一些框架时,常需要此操作!
七、解析:操作xml文档,将文档中的数据读取到内存中
(1) 操作xml文档
1. 解析(读取):将文档中的数据读取到内存中
2. 写入:将内存中的数据保存到xml文档中。持久化的存储(不常涉及)
(2)解析xml的方式(思想):
1. DOM:将标记语言文档一次性加载进内存,在内存中形成一颗dom树 (服务器)
* 优点:操作方便,可以对文档进行CRUD的所有操作
* 缺点:占内存
2. SAX:逐行读取,基于事件驱动的。(移动端)
* 优点:不占内存。
* 缺点:只能读取,不能增删改
面试中常考xml解析思想:服务器中常用DOM思想解析,移动设备、Android中使用功能SAX思想解析xml
(3)xml常见的解析器:
JAXP | sun公司提供的解析器,支持dom和sax两种思想(java官方版,性能低,使用少) |
---|---|
DOM4J | 一款非常优秀的解析器(服务器端常用) |
Jsoup | jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。也可以解析xml。 |
PULL | Android操作系统内置的解析器,sax方式的。 |
下一篇文章,将详细介绍Jsoup解析器的使用步骤。