「Groovy」- XML

问题描述

在知晓 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格式问题。

相关文档

Apache Groovy/Processing XML