12
首先:我在Scala 2.8Scala XML模式匹配和屬性
我在使用XML元素上的模式匹配時遇到了一個小問題。我知道我可以做這樣的事情:
val myXML = <a><b>My Text</b></a>
myXML match {
case <a><b>{theText}</b></a> => println(theText)
case _ =>
}
這是哪門子例子,我發現到處在網上和我的兩個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 _ =>
}
編譯器將拋出一個error: in XML literal: '>' expected instead of 't'
我,這說明因爲編譯器預計元素的標籤被關閉,我不能使用屬性。如果我嘗試將具有固定屬性的XML元素與大括號相匹配,則會引發同樣的錯誤。
所以我的問題很簡單:我該如何做這樣的比賽?我是否必須爲比賽創建Elem
而不是使用那些漂亮的文字?如果:最好的辦法是什麼?
我想這將是更痛苦的情況下,只有類型屬性具有特定值的節點匹配。 :-(對嗎? – Malax 2010-04-09 20:00:59
@Malax不是,只要在'=>'之前加上'if b'@type「== Text(」whatever「)'或者'if(b \」@type 「).toString ==」whatever「'。 – 2010-04-09 21:40:32