html - 使用 groovy 提取部分 HTML

标签 html groovy xmlslurper

我需要从给定的 HTML 页面中提取一部分 HTML。到目前为止,我使用带有 tagsoup 的 XmlSlurper 来解析 HTML 页面,然后尝试使用 StreamingMarkupBuilder 获取所需的部分:

import groovy.xml.StreamingMarkupBuilder
def html = "<html><body>a <b>test</b></body></html>"
def dom = new XmlSlurper(new org.ccil.cowan.tagsoup.Parser()).parseText(html)
println    new StreamingMarkupBuilder().bindNode(dom.body)

但是,我得到的结果是

<html:body xmlns:html='http://www.w3.org/1999/xhtml'>a <html:b>test</html:b></html:body>

这看起来不错,但我想在没有 html 命名空间的情况下获得它。

如何避免命名空间?

最佳答案

关闭 TagSoup 解析器上的 namespace 功能。示例:

import groovy.xml.StreamingMarkupBuilder
def html = "<html><body>a <b>test</b></body></html>"
def parser = new org.ccil.cowan.tagsoup.Parser()
parser.setFeature(parser.namespacesFeature, false)
def dom = new XmlSlurper(parser).parseText(html)
println new StreamingMarkupBuilder().bindNode(dom.body)

关于html - 使用 groovy 提取部分 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5780225/

相关文章:

javascript - 当我合并时,我看不到删除按钮

gradle - 如何在用Java编写的自定义插件中配置Gradle TestNGOptions?

java - Groovy - 简单的日期重新格式化

html - 使用 XmlSlurper 时如何查找有问题的行

groovy - 使用命名空间和实体在 Groovy 中解析 XML

xml - Groovy 删除 XMLSlurper 中的标签,replaceNode {} 什么都不做

html - 不希望标题中的 DIV 重叠

html - 什么是 CSS 转换 :translate() property ultimately for?

android - 在不使用 webview 的情况下在 android 的 textview 中显示 html 表

grails - Groovy 变量双重替换