我正在尝试解析作为一个巨大字符串出现的 HTML。当我到达第 13 行时,NodeChild page = it.parent()
我能够找到我正在寻找的 key ,但数据就像这是我的 key 中的值一这是我的 key 中的值二这是我的 key 中的值三
和很快。我看到一个反复出现的趋势,两者之间的分隔符始终是大写大写(没有空格)。
我想以某种方式将其放入 ArrayList
中。有没有我缺少的方法 from the docs那能自动做到这一点吗?有没有更好的方法来解析它?
class htmlParsingStuff{
private def slurper = new XmlSlurper(new Parser())
private void slurpItUp(String rawHTMLString){
ArrayList urlList = []
def htmlParser = slurper.parseText(rawHTMLString)
htmlParser.depthFirst().findAll() {
//Loop through all of the HTML Tags to get to the key that I am looking for
//EDIT: I see that I am able to iterate through the parent object, I just need a way to figure out how to get into that object
boolean trigger = it.text() == 'someKey'
if (trigger){
//I found the key that I am looking for
NodeChild page = it.parent()
page = page.replace('someKey', '')
LazyMap row = ["page": page, "type": "Some Type"]
urlList.add(row)
}
}
}
}
最佳答案
我无法为您提供工作代码,因为我不知道您的具体 html。
但是:不要使用 XmlSlurper
解析 HTML,HTML 的格式不正确,因此 XmlSlurper
不是适合该工作的工具。
对于 HTML,请使用类似 JSoup 的库。您会发现它更容易使用,特别是如果您有一些 JQuery 知识。由于您没有发布 HTML 片段,所以我编写了自己的示例:
@Grab(group='org.jsoup', module='jsoup', version='1.10.1')
import org.jsoup.Jsoup
def html = """
<html>
<body>
<table>
<tr><td>Key 1</td></tr>
<tr><td>Key 2</td></tr>
<tr><td>Key 3</td></tr>
<tr><td>Key 4</td></tr>
<tr><td>Key 5</td></tr>
</table>
</body>
</html>"""
def doc = Jsoup.parse(html)
def elements = doc.select('td')
def result = elements.collect {it.text()}
// contains ['Key 1', 'Key 2', 'Key 3', 'Key 4', 'Key 5']
操作您将使用的文档
def doc = Jsoup.parse(html)
def elements = doc.select('td')
elements.each { oldElement ->
def newElement = new Element(Tag.valueOf('td'), '')
newElement.text('Another key')
oldElement.replaceWith(newElement)
}
println doc.outerHtml()
关于java - Groovy 中的 Html 吞吐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40433443/