我有两个配置文件:
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>
我正在使用CompositeConfiguration。首先添加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(&#34; numbers.number&#34;),我预计会返回100,200。 getList(&#34; alphabets.alphabet&#34;)返回A,B。
答案 0 :(得分: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中定义的列表