2016-08-05 41 views
0

Ich bin neu in Scala. Ich mache einen TCP-Server, der liest von db für eine beliebige Anzahl von registrierten Client (Durch registrierte ich meine, dass sein Eintrag in meiner Eigenschaft/XML-Datei sein soll). Also, ich bin verwirrt unter Verwendung von XML-Konfigurationsdatei oder eine Eigenschaft Datei + HashMap. Dies ist ein Beispielcode.Scala | Eigenschaftendatei + HashMap oder XML | Was ist besser in Bezug auf die Durchführung von Scala Programm zu verwenden?

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> 

Laden/

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 +"]") 
    } 

Lesen habe ich keine Ahnung, wie client1/2/3 ... erkennen n beim Lesen.

Antwort

0

Sie verwenden Label Funktion

Beispiel

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)' */