斯卡拉HTML解析器对象使用(Scala HTML parser object usage)

2019-09-19 07:10发布

我使用的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

但我不知道如何让孩子的内容。 另外,我不知道如何通过子对象迭代。

Answer 1:

目前还不清楚在您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)

等等。



文章来源: Scala HTML parser object usage