【JavaWeb】XML和Jsoup的相关内容
生活随笔
收集整理的这篇文章主要介绍了
【JavaWeb】XML和Jsoup的相关内容
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
文章目录
- 1 概念
- 2 语法
- 2.1 基本语法
- 2.2 组成部分
- 2.3 约束
- 2.3.1 使用DTD约束
- 2.3.2 使用Schema约束
- 3 解析
- 3.1 将文档中的数据读到内存
- 3.2 XML常见的解析器
- 4 Jsoup
- 4.1 使用Jsoup
- 4.2 对象的使用
- 4.2.1 Jsoup对象
- 4.2.2 Document对象
- 4.2.3 Element对象
- 4.3 快捷查询方式
- 4.3.1 selector选择器
- 4.3.2 XPath
1 概念
Extensible Markup Language 可扩展标记语言
可扩展:标签都是自定义的
功能:存储数据
- 配置文件
- 在网络中传输
xml和html的区别
- xml的标签都是自定义的 html的标签都是预定义的
- xml语法严格 html语法松散
- xml是存储数据的 html是展示数据的
2 语法
2.1 基本语法
- 后缀名是.xml
- 第一行必须定义为文档声明
- <?xml version="1.0" encoding="utf-8" ?>
- xml中有且仅有1个根标签
- 属性值必须使用引号引起来
- 标签必须有结束
- xml标签区分大小写
2.2 组成部分
- 文档声明:<?xml 属性列表 ?>
属性列表:version版本号、encoding编码方式(默认ISO-8859-1)、standalone是否独立('yes’不依赖其他文件/'no’依赖其他文件) - 指令:结合css控制样式(了解)<?xml-stylesheet type="text/css" href="#.css" ?>
- 标签:名称自定义。数字、标点不能开头,名称不能以xml开头,名称不能包含空格。
- 属性:id属性唯一
- 文本:CDATA区,在这个区域的内容会原样展示< ! [ CDATA [ 展示数据 ] ] >
2.3 约束
约束:规定xml文档的书写规则
目标:在xml中引入约束文档,读懂约束文档
分类
- DTD:一种简单的约束技术
- Schema:一种复杂的约束技术
2.3.1 使用DTD约束
将dtd文档引入xml文档
-<!DOCTYPE 根标签名 SYSTEM "dtd文件位置">
2.3.2 使用Schema约束
可以约束标签的属性值
引入约束:首先填写根标签,然后引入xsi前缀,引入xsd文件命名空间,给每个xsd约束声明一个前缀作为标识
3 解析
3.1 将文档中的数据读到内存
操作xml文档将文档中的数据读取到内存中
解析XML的方式:服务端一般用DOM 移动端一般用SAX
- DOM : 将标记语言文档一次性加载进内存,在内存中形成一棵DOM树。
优点:操作方便,可以对文档进行CRUD的所有操作
缺点:消耗内存 - SAX:逐行读取,基于事件驱动的。读一行释放一次。
优点:不占内存
缺点:只能读取,不能增删改
3.2 XML常见的解析器
- JAXP:SUN公司提供的解析器,支持DOM和SAX两种思想
- DOM4J
- Jsoup:是一款HTML解析器,通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。可以直接解析URL地址和HTML文本内容
- PULL:安卓OS内置的解析器,使用SAX方式。
4 Jsoup
4.1 使用Jsoup
4.2 对象的使用
主要对象
- Jsoup是一个工具类,可以解析html或xml文档,返回Document对象
- Document是文档对象,代表内存中的DOM树
- Elements是元素Element对象的集合,可以当作ArrayList<Element>来使用
- Element是元素对象,可以获取元素的属性和文本等
- Node是节点对象,是以上对象的父亲。
4.2.1 Jsoup对象
Jsoup主要方法
- Jsoup.parse(File in, String charset) 用来解析html和xml文档返回Document对象,参数是XML或HTML文件
- Jsoup.parse(String html) 可以解析xml或html格式的字符串,返回DOM对象
- Jsoup.parse(URL url, int timeoutMills) 通过网络获取指定的html或xml文档对象
爬虫解析HTML时常用
public static void main(String[] args) throws IOException {URL url = new URL("https://www.baidu.com");Document parse = Jsoup.parse(url, 10000);System.out.println(parse);}4.2.2 Document对象
- getElementById(String id)根据id属性值获取唯一的element对象
- getElementsByTag(String name)根据标签名获取元素对象的集合
- getElementsByAttribute(String key)根据属性名称获取元素对象的集合
- getElementsByAttributeValue(String key, String value)根据对应的属性名和属性值获取元素对象
4.2.3 Element对象
获取子元素对象
- getElementById(String id)根据id属性值获取唯一的element对象
- getElementsByTag(String name)根据标签名获取元素对象的集合
- getElementsByAttribute(String key)根据属性名称获取元素对象的集合
- getElementsByAttributeValue(String key, String value)根据对应的属性名和属性值获取元素对象
获取属性值
- String attr(String key):根据属性名称获取属性值
获取文本内容
- String text():获取文本内容
- String html():获取标签体的所有内容 包括子标签的字符串内容
4.3 快捷查询方式
4.3.1 selector选择器
- Elements select(String cssQuery)
- 语法:参考selector类的文档
4.3.2 XPath
XML路径语言,用来确定XML文档中查找信息的语言
对DOM树形结构进行操作
需要导入JsoupXpath的jar包
查询w3cshool的参考手册区使用XPath的语法进行查询
总结
以上是生活随笔为你收集整理的【JavaWeb】XML和Jsoup的相关内容的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 助力句子变换:35W抽象、43W同义、1
- 下一篇: (设计模式)简单工厂模式之通过配置文件动