2013-01-17 17 views
13

Ben buna benzer bir XML yapılandırma dosyası vardır: ŞimdiApache Commons XMLConfiguration - belirli bir düğümdeki nesnelerin listesi nasıl alınır?

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<config> 
    <mainServerHostname>MainServer</mainServerHostname> 
    <failoverServers> 
     <server> 
      <ipAddress>192.168.0.5</ipAddress> 
      <priority>1</priority> 
     </server> 
     <server> 
      <ipAddress>192.168.0.6</ipAddress> 
      <priority>2</priority> 
     </server> 
    </failoverServers> 
</config> 

, biliyorum ki aşağıdaki kodu kullanarak (benim XMLConfiguration nesne kurma ve yapılandırma çağırmak sonra):

config.getList("failoverServers.server.ipAddress"); 

ben tüm ip adreslerinin bir listesini alabilirsiniz. Bu kullanışlı, ama böyle bir şey yapabileceğini bile daha kullanışlı olacağını olacağını: Bir IPADDRESS ve önceliğe sahip, her biri Nesnelerin listesini

config.getList("failoverServers.server"); 

ve olsun. Anlayabildiğim kadarıyla, bunu yapmanın bir yolu yok. Bu tür bir işlevi nasıl gerçekleştirebileceğime dair herhangi bir fikri olan var mı? Hatta, Java'nın verileri daha kolay hale getirip getiremeyeceği (ki bu muhtemelen daha da iyi olabilir) veriyi haritalayabileceği XML yapısına karşılık gelen veri yapılarını tanımlamaya bile son derece istekli olurdum. Yardımın için teşekkürler!

cevap

15

XMLConfiguration yerine HierarchicalConfiguration kullanabilirsiniz. Bu gibi çalışır:

List<HierarchicalConfiguration> servers = config.configurationsAt("failoverServers.server"); 
for(HierarchicalConfiguration server : servers) { 
    System.out.println(server.getString("ipAddress")); 
} 

Bkz: http://commons.apache.org/configuration/userguide/howto_xml.html

İlgili konular