scala中的xml属性解析

时间:2011-08-04 12:31:59

标签: xml scala

我正在尝试针对xml架构验证内容。我从用户那里获得一个输入并检查该值是否作为name属性的值存在。如果它确实我返回true或者如果不是false。我已经将模式加载到val中并选择了我想要的节点

val a = XML.load("schema.xml")
val nodes = (a \\ "Items")

现在有以下

<Items name="name1" type="type1" />
<Items name="name2" type="type2" />
<Items name="name3" type="type3" />
<Items name="name4" type="type4" />

用户输入值 name1

我试过

nodes.foreach(checkattr(_))

checkattr(val : elem)
{
  if(elem@name == userinput) { true } else { false }
}

但是这不起作用,即使它确实这样做似乎是错误的方式,因为我想在整个遍历中只返回一次真或假,而不是我上面指定的那些。

任何指针对我都有用。

2 个答案:

答案 0 :(得分:4)

我相信你想要的是:

scala> <foo baz="quux"/> \ "@baz"
res0: scala.xml.NodeSeq = quux

scala> 

答案 1 :(得分:1)

这就是我要搜索的内容:

val isThere = dataItems \\ "@name" find { _.text == name }
if (isThere != None)
  return true
else
  false

发布它,因为它也可能对其他人有用