2

我有两个配置文件:

override.xml looks like this ...
<paths>
 <path>1</path>
 <path>2</path>
 <path>3</path>
</paths> 
<numbers>
 <number>100</number>
 <number>200</number>
</numbers>

default.xml looks like this ...
<paths>
 <path>4</path>
 <path>5</path>
 <path>6</path>
</paths>
<alphabets>
 <alphabet>A</alphabet>
 <alphabet>B</alphabet>
</alphabets>

我正在使用复合配置。首先添加 override.xml,然后添加 default.xml。

When I do a getList("paths.path") on the CompositeConfiguration, I get back 1,2,3,4,5,6. 

这告诉我我正在从 override.xml 和 default.xml 中获取值。有没有办法只从 override.xml 取回值,因为它覆盖了 default.xml 值?

同时,如果我要执行 getList("numbers.number"),我希望返回 100,200。一个 getList("alphabets.alphabet") 返回 A,B。

4

1 回答 1

1

组合列表的内容是 CompositeConfiguration 的 getList 的默认行为。您需要使用的是带有适当 NodeCombiner 的 CombinedConfiguration。对于您的用例,OverrideCombiner 是合适的。示例代码:

XMLConfiguration x1 = new XMLConfiguration();
....
XMLConfiguration x2 = new XMLConfiguration();
....
CombinedConfiguration config = new CombinedConfiguration(new OverrideCombiner());
config.addConfiguration(x1);
config.addConfiguration(x2);

当您执行 config.getList("numbers.number") 时,此处将返回配置 x1 中定义的列表

于 2016-11-22T04:51:58.853 回答