问题描述
在知晓 Jsoup 之前,我们使用本文 XMLParser 及 XMLSlurper 库操作 HTML 文本,本笔记将介绍这两个类库使用方法。
注意事项
如果可能,尽量不要使用 XML 类库操作 HTML 文本。
使用方法
处理 XML 文本
有关XML处理,可以参考「Apache Groovy/Processing XML」文档。
处理 HTML 文本
在处理HTML文本时,最主要的问题是HTML不时标准XML文档,“它是格式错误的XML文档”:
//////////////////////////////////////////////////////////////////////////////// // 方法一 // https://stackoverflow.com/questions/28110181/how-to-parse-non-well-formatted-html-with-xmlslurper //////////////////////////////////////////////////////////////////////////////// @Grab(group='net.sourceforge.nekohtml', module='nekohtml', version='1.9.14') import org.cyberneko.html.parsers.SAXParser import groovy.util.XmlSlurper def parser = new SAXParser() def page = new XmlSlurper(parser).parseText('some html string') //////////////////////////////////////////////////////////////////////////////// // 方法一 // https://stackoverflow.com/questions/30753884/how-to-work-around-groovys-xmlslurper-refusing-to-parse-html-due-to-doctype-and //////////////////////////////////////////////////////////////////////////////// @Grab('org.ccil.cowan.tagsoup:tagsoup:1.2.1') import org.ccil.cowan.tagsoup.Parser def parser = new Parser() def page = new XmlSlurper(parser).parseText('some html string')
上述两个方法是类似的,不同之处为使用不同Parser处理HTML格式问题。
相关文档