我觉得还是先学一学吧……
概念:Extensible Markup Language:可扩展标记语言
可扩展:标签都是自定义
功能:
储存数据
配置文件
在网络中传输
与HTML区别:
xml标签自定义,html标签预定义
xml标签语法严格,html语法松散
xml是储存数据的,html展示数据
<?xml version='1.0'?>
<users>
<user id="1">
<name>zhangsan</name>
<age>23</age>
<gender>male</gender>
</user>
<user id="2">
<name>lisi</name>
<age>28</age>
<gender>female</gender>
</user>
</users>
基本语法:
后缀名为.xml
第一行必须定义文档声明:
<?xml version='1.0'?>
文档中有且仅有一个根标签:
<users>
</users>
属性值必须使用引号
标签必须正确关闭
标签名称区分大小写
组成部分:
文档声明
格式:<?xml 属性列表 ?>
属性列表:
version:版本号(必须)
encoding:编码方式
standalone:是否独立,yes,依赖其他文件;no,不依赖其他文件
指令:组合css
标签:自定义
也有命名规则,获取可以参考java
属性:id属性值唯一
文本:特殊字符需转义
CDATA区:数据被原样展示
格式:<![CDATA[数据]]>
约束:定义xml文档的书写规则
作为框架的使用者:需要会引入约束文档、读懂
分类:
DTD:一种简单的约束技术
Schema:一种复杂的约束技术
DTD:
引入dtd文档到xml文档
内部dtd:将约束规则定义在xml文档中
<?xml version="1.0"?>
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<!--!DOCTYPE note (第二行)定义此文档是 note 类型的文档。
!ELEMENT note (第三行)定义 note 元素有四个元素:"to、from、heading,、body"
!ELEMENT to (第四行)定义 to 元素为 "#PCDATA" 类型
!ELEMENT from (第五行)定义 from 元素为 "#PCDATA" 类型
!ELEMENT heading (第六行)定义 heading 元素为 "#PCDATA" 类型
!ELEMENT body (第七行)定义 body 元素为 "#PCDATA" 类型-->
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend</body>
</note>
外部dtd:将约束规则定义在外部的dtd文件中
本地:<!DOCTYPE 根标签名 SYSTEM "dtd文件的位置">
note.dtd 外部文件内容
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
xml文件:
<?xml version="1.0"?>
<!--外部文件导入<!DOCTYPE 根标签名 SYSTEM "dtd文件的位置">-->
<!DOCTYPE note SYSTEM "note.dtd">
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
网络:<!DOCTYPE 根标签名 PUBLIC "dtd文件的名字" "dtd文件的位置(url)" >
Schema
原来学Spring框架的时候遇到的配置文件就是这玩意儿
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation=
"http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:property-placeholder location="classpath:jdbc.properties"/>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driver}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<!--组件扫描配置-->
<context:component-scan base-package="com.zhang"/>
</beans>
解析:操作xml文档,将数据读取到内存中
操作xml文档:
解析(读取):将文档中的数据读取到内存中
写入:将内存中的数据保存到xml文档中。持久化储存。
解析方式(思想):
1、DOM:将标记语言文档一次性加载进内存,在内存中形成一棵dom树
优点:操作方便,可以对文档进行增删改查的所有操作
缺点:占内存
2、SAX:逐行读取,基于事件驱动
优点:不占内存
缺点:只能读取,不能增删改
常见解析器:
JAXP:sun公司提供的解析器,支持dom和sax两种思想
DOM4J:非常优秀
Jsoup:本来用于解析html,
PULL:Android操作系统内置解析器,sax方式