加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala XML模式匹配和属性

发布时间:2020-12-16 09:11:57 所属栏目:安全 来源:网络整理
导读:首先:我在 Scala 2.8 在XML元素上使用模式匹配时,我有一个小问题.我知道我可以做这样的事情: val myXML = abMy Text/b/amyXML match { case ab{theText}/b/a = println(theText) case _ =} 这是我在网上和我的两个斯卡拉书中找到的一个例子.但是,如果我想
首先:我在 Scala 2.8

在XML元素上使用模式匹配时,我有一个小问题.我知道我可以做这样的事情:

val myXML = <a><b>My Text</b></a>
myXML match {
    case <a><b>{theText}</b></a> => println(theText)
    case _ =>
}

这是我在网上和我的两个斯卡拉书中找到的一个例子.但是,如果我想根据一个属性匹配一个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 _ => 
}

编译器会抛出一个错误:在XML文字中:’>’预期而不是’t’在我,表示我不能使用属性,因为编译器期望元素标记被关闭.如果我尝试将一个XML元素与固定属性相匹配,没有花括号,同样的错误会引发.

所以我的问题很简单:我该怎么做这样的比赛?我必须为比赛创建一个Elem,而不是使用那些很好的文字?如果:最好的办法是什么?

解决方法

处理属性更是一种痛苦,它应该是.这个具体的例子实际上表明,Scala并没有像它这样构造它们一样解构XML
语法对XML文字有效.无论如何,这是一种方式:

myXML match { 
  case <a>{b @ <b>{theText}</b>}</a> => 
    println("An %s text: %s".format(b  "@type",theText))
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读