2013-01-17 11 views
13

我有類似這樣的XML配置文件:Apache Commons XMLConfiguration - 如何獲取給定節點上的對象列表?

<?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> 

現在,我知道,通過使用下面的代碼(後設置我的XMLConfiguration中的對象並調用它的配置):

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

我可以獲得所有IP地址的列表。這是很方便,但如果我可以做這樣的事情會是什麼更加得心應手將是:

config.getList("failoverServers.server"); 

,並得到對象的列表,每個都有一個ip地址和優先級。據我所知,沒有辦法做到這一點。有沒有人對我如何完成這種類型的功能有任何想法?我甚至會非常願意定義與Java可以將數據映射到XML的結構相對應的數據結構,如果這樣做會使事情變得更容易(實際上可能會更好)。感謝所有的幫助!

回答

15

您可以使用HierarchicalConfiguration而不是XMLConfiguration。是這樣的:

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

參見:http://commons.apache.org/configuration/userguide/howto_xml.html

相關問題