XML
W3C:万维网联盟
-
概念:可扩展标记语言
- 可扩展 : 标签都是自定义的。
- 功能 : 1.配置文件 2.在网络中传输
- xml和html的区别:
- xml的标签是自定义的,html标签是预定义的
- xml的语法严格,html语法松散
- xml是存储数据的,html是展示数据的
-
快速入门:
- 基本语法:
- xml文档的后缀名 .xml
- xml第一行必须定义为文档声明
- xml文档中有且仅有一个根标签
- 属性值必须有引号引起来
- 标签必须正确关闭
- 基本语法:
-
组成部分:
- 文档声明 : <?xml 属性列表>
- version:版本号,必须的属性
- encoding:编码方式
- standalone : 是否独立(yes / no)
- 指令 : <?xml-stylesheet type="text/css" href="a.css" ?>
- 标签 : 标签名自定义
- 属性 : id值唯一
- 文本 : CDATA区:在该区域的数据会被原样展示
格式 : <![CDATA[ 数据 ]]>
- 文档声明 : <?xml 属性列表>
-
约束: 规定xml文档的书写规则
-
分类
- DTD : 一种简单的约束技术
- Schema : 一种复杂的约束技术
-
DTD :
- 引入DTD文档到xml文档中
内部dtd: 将约束规则定义在外部的dtd文件中
外部dtd: 将约束规则定义在外部的dtd文件中- 本地: <!DCTYPE student SYSTEM "student.dtd">
- 网络: <!DCTYPE 根标签名 PUBLIC "dtd文件名字" "dtd文件的位置URL">
- 引入DTD文档到xml文档中
-
Schema
- 引入xml 文档的根元素
- 引入xsi前缀, xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
- 引入xsd文件命名空间, xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd”>
- 为每一个xsd约束声明一个前缀,作为标识 xmlns=“http://maven.apache.org/POM/4.0.0”
-
-
解析: 操作xl文旦,将文档中的数据读取到内存中
-
操作xml文档
- 解析 (读取)
- 写入:将内存中的数据保存到xml文档中持久化的存储
-
解析xml的方式
- DOM : 将标记语言文档一次性加载进内存,在内存中形成一颗dom树
- 优点 : 操作方便,可以对文档进行CRUD的所有操作
- 缺点 : 占内存
- SAX : 逐行读取,基于事件驱动
- 优点:不占内存
- 缺点: 只能读取
- DOM : 将标记语言文档一次性加载进内存,在内存中形成一颗dom树
-
xml常见的解析器:
- JAXP : sun公司提供的解析器,支持dom和sax两种思想
- DOM4J:一款非常优秀的解析器
- Jsoup :
- PULL : Android操作系统内在的解析器,sax方式
-
Jsoup的使用
1. Jsoup: 工具类.可以解析html或xml文档,返回Document
- parse : 解析html或xml文档,返回document
- parse(File in, String charsetName) : 解析xml或html文件的
- parse(String html) : 解析xml或html字符串
- parse(URL url, int timeoutMillis) : 通过网络路径获取指定的html或xml的文档对象
2. Docment : 文档对象,代表内存中的dom树
- 获取Element对象
- getElementsByTag(String tagname) : 根据标签名称获取元素集合
- getElementsByAttribute(String key) : 根据属性名称获取元素对象集合
- getElementsByAttributeValue(String key,String value) : 根据对应的属性名和属性值获取元素对象集合
4. Element : 元素Element对象的集合。可以当做 ArrayList来使用
5. Element : 元素对象
6. Node: 节点对象
-
public class JsoupDemo1 {
public static void main(String[] args) throws IOException {
//获取Document对象,根据xml文档获取
//获取student.xml的path
String path = JsoupDemo1.class.getClassLoader().getResource("student.xml").getPath();
//解析xml文档,加载文档进内存
Document parse = Jsoup.parse(new File(path), "utf-8");
//获取元素对象.Element
Elements elements = parse.getElementsByTag("name");
System.out.println(elements.size());
Element element = elements.get(0);
//获取数据
String name = element.text();
System.out.println(name);
}
}