日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

java正则表达式去除xml标签之间的空格_HTML解析器——htmlparser2使用详解,换个姿势解析html和xml

發(fā)布時間:2024/1/23 HTML 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java正则表达式去除xml标签之间的空格_HTML解析器——htmlparser2使用详解,换个姿势解析html和xml 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

上一篇文章我們介紹了一個html/xml解析器——htmlparser,這篇文章我們介紹另外一個解析模塊htmlparser2,后者是對前者的重構(gòu),同時對前者的API做了部分兼容。

用法簡介

安裝

const { Parser } = require('htmlparser2');const parser = new Parser(handler, options);parser.parseComplete('html/xml內(nèi)容');

寫法

const { Parser } = require('htmlparser2');const parser = new Parser(handler, options);parser.parseComplete('html/xml內(nèi)容');

htmlparser2提供了一個解析器——Parser,初始化它至少需要一個handler,options是可選的。

handler是一個對象,在這個對象上可以設(shè)置很多的鉤子函數(shù),Parser解析時會在每個階段運行對應(yīng)的鉤子函數(shù)。

以下是可以設(shè)置的所有的鉤子函數(shù),

onopentag( name, attributes)onopentagname( name)onattribute( name, value)ontext( text)onclosetag( name)onprocessinginstruction( name, data)oncomment( data)oncommentend()oncdatastart()oncdataend()onerror( error)onreset()onend()

htmlparser模塊是通過正則表達式來解析html內(nèi)容的,而htmlparser2則不同,它會按順序讀取html的每個字符,并且推測后面字符是標簽名、屬性還是其他的類型,所以htmlparser2在解析完每一個標簽后都會運行相應(yīng)的鉤子函數(shù)。

先來看一下例子,

圖1

圖1中設(shè)置了所有的鉤子函數(shù)以便來說明每個鉤子函數(shù)的作用,運行一下,

圖2

對照圖1和圖2就能看出來每個鉤子函數(shù)的運行時機,這其中有以下幾個鉤子函數(shù)需要注意一下。

  • oncdatastart和oncdataend會在解析標簽時觸發(fā),但是觸發(fā)的前提是選項設(shè)置了recognizeCDATA=true或者xmlMode=true;
  • onprocessinginstruction會在解析或者<?xxyy>這樣的標簽時觸發(fā),xx和yy中間可以有分隔符(斜杠或者空格),分隔符前面的字符串就是鉤子函數(shù)中的name的值;
  • 運行parseComplete方法會執(zhí)行reset鉤子函數(shù),如果僅僅執(zhí)行parser的write或者end方法并不會執(zhí)行reset方法。

除了自定義handler以外,htmlparser2還提供了幾個handler,比如DomHandler,用法如下:

圖3

運行一下,我們看看結(jié)果,

圖4

如果4所示,DomHandler處理的結(jié)果是以數(shù)組的形式輸出的,在每個單元數(shù)據(jù)中還可以拿到上一個、下一個以及父節(jié)點的數(shù)據(jù)。

htmlparser2還可以通過操作流Stream解析內(nèi)容,寫法如下:

圖5

總結(jié)

這篇文章和上一篇是姊妹篇,都是介紹解析html/xml內(nèi)容的模塊,通過對比,我們發(fā)現(xiàn)htmlparser2模塊功能更強大一些,也更靈活一些,同時也兼容htmlparser模塊的一些接口。雖然兩者功能類似,但是這給了我們更多的選擇性。

喜歡我的文章就關(guān)注我吧,有問題可以發(fā)表評論,我們一起學(xué)習(xí),共同成長!

總結(jié)

以上是生活随笔為你收集整理的java正则表达式去除xml标签之间的空格_HTML解析器——htmlparser2使用详解,换个姿势解析html和xml的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。