0

我正在尝试使用 Scala 解析元标记。我试过用 XML 匹配来做这个,比如

`html // meta ...` etc,

但我收到格式错误的 XML 错误,因为此特定页面上的这些元标记没有结束标记或... />附件。

所以对于下面的 HTML,

val html = """<meta name="description" content="This is some meta description">"""

我正在使用以下正则表达式匹配器:

val metaDescription = """.*meta name="Description" content="([^"]+)"""".r
  • 当我尝试匹配时,val metaDescription(desc) = html我得到一个 scala.MatchError。
  • 当我尝试metaDescription.findAllIn(html)和迭代时,我得到了整个字符串——而不仅仅是描述。

我怎样才能得到里面的价值,content而不是别的?

编辑

我得到了我想要的结果:

metaDescription.findAllIn(html).matchData foreach {
  desc => println(desc.group(1))
} 

但这似乎还有很长的路要走。有更好的解决方案吗?

4

1 回答 1

2

Scala XML 和 TagSoup提供了一种直接在 Scala XML 中使用标签汤的方法。

如果您对替代方案持开放态度,那么Scales Xml提供了一种类似的有用方法来通过替代 SAX 解析器解析 html

val html = loadXmlReader(htmlStream, parsers = AlternateSAXFactoryPool)

该链接上提供了 Tagsoup 和 Nu.Validator 的示例工厂。

于 2013-01-13T11:48:35.683 回答