Apache Commons XMLConfiguration - 如何在给定节点上获取对象列表?

2022-09-03 07:00:33

我有一个类似于以下内容的XML配置文件:

<?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之后):

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

我可以获得所有IP地址的列表。这很方便,但是如果我能做这样的事情,更方便的是:

config.getList("failoverServers.server");

并获取对象列表,每个对象都有一个 ipAddress 和一个优先级。据我所知,没有办法做到这一点。有没有人对我如何完成这种类型的功能有任何想法?我甚至非常愿意定义与XML结构相对应的数据结构,如果这能使事情变得更容易(事实上,这甚至可能更好)。感谢大家的帮助!


答案 1

您可以使用分层配置而不是 XML 配置。工作原理如下:

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


答案 2

推荐