XML
一、概念
1.1概念:
eXtensible Markup Language:可扩展标记语言,标签都是自定义的。
1.2作用:
- 作为配置文件:框架,工具。。。
- 传输数据
1.3与HTML的区别
- xml标签是自定义的,html标签是预定义的
- xml语法严谨,html语法松散
- xml是存储数据的,html是展示数据的。
二、组成部分
2.1文档声明
- 任何一个xml文件第一行必须是声明文档。格式<?xml version=“1.0” ?> 文档声明中可以存在两个属性,encoding,值是解码规则,如utf-8,和standalone,值是yes或no。前者表示解码规则,后者表示文档是否独立于xml。由于一般都是独立的xml,所以这个属性一般不常用。
2.2指令
- 结合CSS展示数据:<?xml-stylesheet type=“text/css” href=“a.css” ?>
2.3标签
- 符合标签命名规则;
- 遵循xml语法
2.4属性
- 如果定义id值,则必须唯一
2.5文本
- 对特殊字符处理:
- 转义字符:和html一样
- CDATA区:<![CDATA[文本内容]]>
三、约束(只需要会读懂约束规则即可)
3.1DTD约束
-
内部定义:
-
<!DOCTYPE 根标签名称 "约束">
-
外部引入(本地):
-
<!DOCTYPE 根标签名称 SYSTEM "文件所在位置">
-
-
外部引入(网络):
-
<DOCTYPE 根标签名 PUBLIC "自定义名称" "网络路径URL">
-
3.2scheam约束
-
定义xml实例文档:
-
定义xml是实例文档:xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-
定义命名空间:xsi:schemaLocation="http://www.itcast.cn/xml student.xsd"
-
定义前缀: xmlns:前缀="http://www.itcast.cn/xml"
-
四、解析
4.1解析xml方法
-
DOM解析:
- XML读取到内存,形成一个DOM树
- 优点:操作方便,可以对文档进行CRUD的操作
- 缺点:占内存
-
SAX解析:
- 逐行读取,基于事件驱动的
- 优点:不占内存
- 缺点:只能读取,不能增删改
-
常见解析器:JAXP、DOM4J、Jsoup、pull
Jsoup:工具类,解析html和xml,返回Document对象
parse():解析html和xml文档,返回Document
Document:getElementById(String id):根据id属性值获取唯一的element对象
getElementsByTag(String tagName):根据标签名称获取元素对象集合
getElementsByAttribute(String key):根据属性名称获取元素对象集合
getElementsByAttributeValue(String key, String value):根据对应的属性名和属性值获取元素对象集合
xPath:需要xPath的jar包支持,selN()
Element:元素(标签)对象
String attr(String key):根据属性名称获取属性值
String text():获取文本内容
String html():获取标签体的所有内容(包括字标签的字符串内容)
getElementById(String id):根据id属性值获取唯一的element对象
getElementsByTag(String tagName):根据标签名称获取元素对象集合
getElementsByAttribute(String key):根据属性名称获取元素对象集合
getElementsByAttributeValue(String key, String value):根据对应的属性名和属性值获取元素对象集合