2

Scalaを使用して、変換するための最良のアプローチは何ですか

<myapp>
  <username>bill</username>
  <password>secret123</password>
  <background>#FFFFFF</background>
</myapp>

次のシステムプロパティに:

myapp.username=bill
myapp.password=secret123
myapp.background=#FFFFFF

コンバーターがsys.propsに追加すると仮定しますか?

4

2 に答える 2

1

java.util.Propertiesは、あなたが説明するものではなく、XML形式をサポートしています。

于 2012-06-06T23:28:55.050 に答える
1
scala> val s = "<myapp><username>bill</username><password>secret123</password><background>#FFFFFF</background></myapp>"
s: java.lang.String = <myapp><username>bill</username><password>secret123</password><background>#FFFFFF</background></myapp>

scala> val e = xml.XML.loadString(s)
e: scala.xml.Elem = <myapp><username>bill</username><password>secret123</password><background>#FFFFFF</background></myapp>

scala> val sp = new sys.SystemProperties
sp: scala.sys.SystemProperties = 
Map(env.emacs -> "", java.runtime.name -> Java(TM) SE Runtime Environment, ....)

scala> sp ++= e.child.map(n => (e.label + "." + n.label, n.text))
res11: sp.type = 
Map(env.emacs -> "", java.runtime.name -> Java(TM) SE Runtime Environment, ...)

サニティーチェック:

scala> val p = java.lang.System.getProperties
p: java.util.Properties = 
{env.emacs=, java.runtime.name=Java(TM) SE Runtime Environment,...}

scala> import collection.JavaConversions._
import collection.JavaConversions._

scala> p filter { case (k, v) => k.startsWith("myapp") } \
          foreach { case (k,v) => println(k + "=" + v) }
myapp.password=secret123
myapp.background=#FFFFFF
myapp.username=bill
于 2012-06-07T01:12:02.527 に答える