在Scala中检索XML属性值

时间:2014-06-12 07:21:31

标签: xml scala

假设我需要在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

有意义吗?您将如何更改/修复此代码

1 个答案:

答案 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