【JavaWeb】XML和Jsoup的相关内容
生活随笔
收集整理的這篇文章主要介紹了
【JavaWeb】XML和Jsoup的相关内容
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 1 概念
- 2 語法
- 2.1 基本語法
- 2.2 組成部分
- 2.3 約束
- 2.3.1 使用DTD約束
- 2.3.2 使用Schema約束
- 3 解析
- 3.1 將文檔中的數(shù)據(jù)讀到內存
- 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 可擴展標記語言
可擴展:標簽都是自定義的
功能:存儲數(shù)據(jù)
- 配置文件
- 在網絡中傳輸
xml和html的區(qū)別
- xml的標簽都是自定義的 html的標簽都是預定義的
- xml語法嚴格 html語法松散
- xml是存儲數(shù)據(jù)的 html是展示數(shù)據(jù)的
2 語法
2.1 基本語法
- 后綴名是.xml
- 第一行必須定義為文檔聲明
- <?xml version="1.0" encoding="utf-8" ?>
- xml中有且僅有1個根標簽
- 屬性值必須使用引號引起來
- 標簽必須有結束
- xml標簽區(qū)分大小寫
2.2 組成部分
- 文檔聲明:<?xml 屬性列表 ?>
屬性列表:version版本號、encoding編碼方式(默認ISO-8859-1)、standalone是否獨立('yes’不依賴其他文件/'no’依賴其他文件) - 指令:結合css控制樣式(了解)<?xml-stylesheet type="text/css" href="#.css" ?>
- 標簽:名稱自定義。數(shù)字、標點不能開頭,名稱不能以xml開頭,名稱不能包含空格。
- 屬性:id屬性唯一
- 文本:CDATA區(qū),在這個區(qū)域的內容會原樣展示< ! [ CDATA [ 展示數(shù)據(jù) ] ] >
2.3 約束
約束:規(guī)定xml文檔的書寫規(guī)則
目標:在xml中引入約束文檔,讀懂約束文檔
分類
- DTD:一種簡單的約束技術
- Schema:一種復雜的約束技術
2.3.1 使用DTD約束
將dtd文檔引入xml文檔
-<!DOCTYPE 根標簽名 SYSTEM "dtd文件位置">
2.3.2 使用Schema約束
可以約束標簽的屬性值
引入約束:首先填寫根標簽,然后引入xsi前綴,引入xsd文件命名空間,給每個xsd約束聲明一個前綴作為標識
3 解析
3.1 將文檔中的數(shù)據(jù)讀到內存
操作xml文檔將文檔中的數(shù)據(jù)讀取到內存中
解析XML的方式:服務端一般用DOM 移動端一般用SAX
- DOM : 將標記語言文檔一次性加載進內存,在內存中形成一棵DOM樹。
優(yōu)點:操作方便,可以對文檔進行CRUD的所有操作
缺點:消耗內存 - SAX:逐行讀取,基于事件驅動的。讀一行釋放一次。
優(yōu)點:不占內存
缺點:只能讀取,不能增刪改
3.2 XML常見的解析器
- JAXP:SUN公司提供的解析器,支持DOM和SAX兩種思想
- DOM4J
- Jsoup:是一款HTML解析器,通過DOM,CSS以及類似于jQuery的操作方法來取出和操作數(shù)據(jù)。可以直接解析URL地址和HTML文本內容
- PULL:安卓OS內置的解析器,使用SAX方式。
4 Jsoup
4.1 使用Jsoup
4.2 對象的使用
主要對象
- Jsoup是一個工具類,可以解析html或xml文檔,返回Document對象
- Document是文檔對象,代表內存中的DOM樹
- Elements是元素Element對象的集合,可以當作ArrayList<Element>來使用
- Element是元素對象,可以獲取元素的屬性和文本等
- Node是節(jié)點對象,是以上對象的父親。
4.2.1 Jsoup對象
Jsoup主要方法
- Jsoup.parse(File in, String charset) 用來解析html和xml文檔返回Document對象,參數(shù)是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)根據(jù)id屬性值獲取唯一的element對象
- getElementsByTag(String name)根據(jù)標簽名獲取元素對象的集合
- getElementsByAttribute(String key)根據(jù)屬性名稱獲取元素對象的集合
- getElementsByAttributeValue(String key, String value)根據(jù)對應的屬性名和屬性值獲取元素對象
4.2.3 Element對象
獲取子元素對象
- getElementById(String id)根據(jù)id屬性值獲取唯一的element對象
- getElementsByTag(String name)根據(jù)標簽名獲取元素對象的集合
- getElementsByAttribute(String key)根據(jù)屬性名稱獲取元素對象的集合
- getElementsByAttributeValue(String key, String value)根據(jù)對應的屬性名和屬性值獲取元素對象
獲取屬性值
- String attr(String key):根據(jù)屬性名稱獲取屬性值
獲取文本內容
- 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的參考手冊區(qū)使用XPath的語法進行查詢
總結
以上是生活随笔為你收集整理的【JavaWeb】XML和Jsoup的相关内容的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 助力句子变换:35W抽象、43W同义、1
- 下一篇: Pytorch 中 matmul 广播