Я смог найти только незначительное улучшение, тест find
/ isEmpty
можно заменить на exists
:
(ns \\ "bar" filter { _ \\ "@id" exists (_.text == "1") }) \\ "tag"
Редактировать после уточняющего комментария:
Это действительно хорошая идея!Попробуйте это для размера:
import xml._
implicit def richNodeSeq(ns: NodeSeq) = new {
def \@(attribMatch: (String, String => Boolean)): NodeSeq =
ns filter { _ \\ ("@" + attribMatch._1) exists (s => attribMatch._2(s.text)) }
}
ns \\ "bar" \@ ("id", _ == "1") \\ "tag"
Я использовал предикат вместо жесткого сравнения значений атрибутов.