2012-07-10 36 views
2

我使用的HTML解析器解析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 

但我不知道如何讓孩子的內容。此外,我不知道如何遍歷子對象。

回答

2

目前還不清楚你的HTML5Parser課程是從哪裏來的,但我會認爲它是this example(或類似的)中的一個。在這種情況下,您的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) 

等等。