2013-01-17 30 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

相关问题