我是Scala的新手。我正在制作一个TCP服务器,它从数据库中读取任何数量的注册客户端(我所说的注册是指它的条目应该在我的属性/XML文件中(。所以,我对使用XML配置文件还是使用属性文件+HashMap感到困惑。这是一个示例代码。
XML
<client-config>
<clients>
<client1 serviceId="1233" URL="jdbc:oracle:thin:@10.168.2.127:1521:mastera" username="sdp" password="sdp"/>
<client2 serviceId="1234" URL="jdbc:oracle:thin:@10.168.2.127:1521:mastera" username="sdp" password="sdp"/>
</clients>
</client-config>
加载/读取
val clientConfigXML = XML.loadFile("src/client_Config.xml")
if(clientConfigXML.toString.contains(serviceId)){
val current_client = "client1"
val dbURL = clientConfigXML \"clients" current_client "@URL"
val password = clientConfigXML \"clients" current_client "@password"
val username = clientConfigXML \"clients" current_client "@username"
val serviceId = clientConfigXML \"clients" current_client "@serviceId"
println("dbURL ["+dbURL+"] password ["+password+"] username ["+username+"] serviceId ["+serviceId +"]")
}
我不知道如何在阅读时检测客户端1/2/3…n。
您使用标签函数
示例
val xml =
scala.xml.Utility.trim(<client-config>
<clients>
<client1 serviceId="1233" URL="jdbc:oracle:thin:@10.168.2.127:1521:mastera" username="sdp" password="sdp"/>
<client2 serviceId="1234" URL="jdbc:oracle:thin:@10.168.2.127:1521:mastera" username="sdp" password="sdp"/>
</clients>
</client-config>)
val clientNames = ( xml \ "clients").head.child.map(_.label)
/* clientNames is 'ArrayBuffer(client1, client2)' */