scala实现xml配置
xml如下:
<Config>
<Param>
<Name>root</Name>
<Item>
<Name>config</Name>
<Value>ALLAUTO</Value>
</Item>
</Param>
</Config>
scala代码如下:
package com.dic.ocs.scala
object Config {
val config: Map[String, Map[String, String]] = (xml.XML.loadFile("Config.xml") \ "Param").iterator.toList.map((t: scala.xml.Node) => {
((t \ "Name").text, (t \ "Item").iterator.toList.map((t2: scala.xml.Node) => {
((t2 \ "Name").text, (t2 \ "Value").text)
}).toMap)
}).toMap
def getValue(seq: String*): Option[String] = {
if (seq.length <= 1) {
None
} else {
seq.tail.foldLeft[Option[String]](Some(seq.head))((x: Option[String], y: String) => {
x match {
case Some(v) => config.get(v).getOrElse(Map[String, String]()).get(y)
case None => None
}
})
}
}
def getItems(x: String): Option[Map[String, String]] = config.get(x)
override def toString =
"config" + "=" + config + "\n"
}