明智地保存和读取更改的配置(存储在XML文件中)

问题描述 投票:0回答:1

我正在处理一个系统,它将其配置(广义上)存储在XML文件中。它还允许用户覆盖某些参数。现在,如果用户更改了配置,整个XML文件将被重写(在用户目录中)并进行更改。然而,它非常不方便。

让我们假设我们有基本配置,如:

<configuration>
    <groupOfProperties>
        <someProperty>Sample value</someProperty>
        <otherProperty>Sample other value</otherProperty>
    </groupOfProperties>
</configuration>

它已被用户覆盖,现在更改为如下所示:

<configuration>
    <groupOfProperties>
        <someProperty>Changed value</someProperty>
        <otherProperty>Sample other value</otherProperty>
    </groupOfProperties>
</configuration>

除非我们的基本配置由于某种原因而改变,否则它很酷并且没有问题。例如 - 添加了一个新参数:

<configuration>
    <groupOfProperties>
        <someProperty>Sample value</someProperty>
        <otherProperty>Sample other value</otherProperty>
        <newProperty>Sample new value<newProperty>
    </groupOfProperties>
</configuration>

现在用户不知道这个改变,并且一些黑盒子读取XML文件将不会获得在基础上改变的新属性。然而,我们可以安全地假设不读取其中一些的事实是故障安全的,它只影响系统的功能层。

有没有办法聪明地保存更改的XML(最好是 - 只更改部分)并轻松地将其与基础文件“合并”,同时处理请求以获得特定值?

我想我实际保存的不是XML文件,而是某种补丁(https://tools.ietf.org/html/rfc5261)。然后在读取某些属性时,我基本上会读取基本文件并在其上应用补丁以获得“真实”配置?

我不是在寻找一个非常精确的实现,而是寻找这个问题的一般解决方案以及如何解决它的一些概念。

非常感谢你的答案!

附:在实际系统中,XML文件比给定的示例复杂得多。

P.S.2不幸的XML文件(或任何其他平面文件)是系统的唯一方法。我们可以称之为技术债务。

xml xpath design-patterns
1个回答
0
投票

捕获数据变化的一般解决方案称为Event Sourcing。它允许通过应用所有先前的补丁来计算当前数据状态,并且还允许审核任何先前的状态。这种模式的典型例子是版本控制系统。

© www.soinside.com 2019 - 2024. All rights reserved.