2

我正在使用 HTML 解析器来解析 HTML 字符串:

import nu.validator.htmlparser.{sax,common}
import sax.HtmlParser
import common.XmlViolationPolicy

val source = Source.fromString(response)
val html = new models.HTML5Parser
val htmlObject = html.loadXML(source)

如何提取对象中特定元素的值?我可以使用以下方法获取孩子和标签:

val child = htmlObject.child(1).label

但我不知道如何获取孩子的内容。另外,我不知道如何遍历子对象。

4

1 回答 1

3

目前尚不清楚您的HTML5Parser课程来自何处,但我将假设它是本示例中的课程(或类似内容)。在这种情况下,您htmlObject的只是一个scala.xml.Node. 首先进行一些设置:

val source = Source.fromString(
  "<html><head/><body><div class='main'><span>test</span></div></body></html>"
)

val htmlObject = html.loadXML(source)

现在您可以执行以下操作,例如:

scala> htmlObject.child(1).label
res0: String = body

scala> htmlObject.child(1).child(0).child(0).text
res1: String = test

scala> (htmlObject \\ "span").text
res2: String = test

scala> (htmlObject \ "body" \ "div" \ "span").text
res3: String = test

scala> (htmlObject \\ "div").head.attributes.asAttrMap
res4: Map[String,String] = Map(class -> main)

等等。

于 2012-07-11T00:48:46.200 回答