假设我需要在Scala中获取属性值。我可以假设该属性是一个字符串(如果这不是一个错误)。
由于scala.xml
API(MetaData.get(name: String):Option[Seq[Node]]
)看起来相当复杂,我写了一个辅助函数:
def attributeValue(e: Elem, aname: String): Option[String] = for {
seq <- e.attributes.get(aname)
value <- seq.collectFirst {case Text(txt) => txt}
} yield value
有意义吗?您将如何更改/修复此代码
答案 0 :(得分:2)
如何使用\
运算符提取属性值:
def attributeValue(e: Elem, attributeName: String): Option[String] =
(e \ s"@$attributeName").collectFirst { case Text(txt) => txt }
请注意,在某些情况下,您可能希望进一步简化它(如下所示),但是在这种情况下,如果找不到属性,则会返回空字符串(这可能不是您所追求的):
def attributeValue(e: Elem, attributeName: String): String =
(e \ s"@$attributeName").text