2011-08-04 53 views
2

我想驗證xml模式的東西。我得到了用戶的輸入,並檢查該值是否作爲name屬性的值存在。如果是這樣,我會返回true或者如果不是false。香港專業教育學院加載模式爲VAL和選擇,我希望像在scala中xml屬性解析

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" /> 

用戶輸入的值名1

我試圖做

nodes.foreach(checkattr(_)) 

checkattr(val : elem) 
{ 
    if([email protected] == userinput) { true } else { false } 
} 

但這是nt工作,甚至如果這樣做似乎是錯誤的方式來做到這一點,因爲我想只爲整個遍歷返回true或false,而不是像上面指定的那樣。

任何指針都會對我有用。

回答

1

這就是我正在尋找:

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

發佈它,因爲它可能是另外一個人太

+0

這正是我正在尋找的。謝謝。 –

4

我相信你想要的東西是一樣的東西:

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

scala> 
+0

有用如果有多個baz屬性會發生什麼,我試過了,它只返回一個空數組 – swordfish

+0

@swordfish - 有效的XML只允許一個給定名稱的單個屬性,不是嗎? –