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のもの)であると想定します。その場合、あなたはただのです。最初にいくつかのセットアップを行います。htmlObjectscala.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 に答える