Mal*_*lax 12 xml scala pattern-matching
首先:我在Scala 2.8
在XML元素上使用模式匹配时,我遇到了一些问题.我知道我可以这样做:
val myXML = <a><b>My Text</b></a>
myXML match {
case <a><b>{theText}</b></a> => println(theText)
case _ =>
}
Run Code Online (Sandbox Code Playgroud)
这是我在网上和我的两本Scala书籍中随处可见的那种例子.但是,如果我想根据属性匹配XML元素呢?
val myXML = <a><b type="awesome">An awesome Text!</b></a>
myXML match {
case <a><b type={textType}>{theText}</b><a> => println("An %s text: %s".format(textType, theText))
case _ =>
}
Run Code Online (Sandbox Code Playgroud)
编译器将抛出一个error: in XML literal: '>' expected instead of 't'对我,表明我不能使用属性,因为编译器期望元素标记被关闭.如果我尝试将XML元素与固定属性匹配,而没有花括号,则会引发相同的错误.
所以我的问题很简单:我怎么能做这样的比赛?我是否必须Elem为匹配创建一个而不是使用那些不错的文字?如果:最好的方法是什么?
Dan*_*ral 17
处理属性更应该是一种痛苦.这个特殊的例子表明,事实上,Scala没有解构个XML它构造他们以同样的方式,因为这句法是有效的XML文本.无论如何,这是一种方式:
myXML match {
case <a>{b @ <b>{theText}</b>}</a> =>
println("An %s text: %s".format(b \ "@type", theText))
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7388 次 |
| 最近记录: |