我存在复杂的存储对象XML结构的问题。
第一个对象:
<DetailsStructure>
<DetailsRelation name="X">
<Type name="A">
<Template id="123"/>
</Type>
</DetailsRelation>
</DetailsStructure>
第二个对象:
<DetailsStructure>
<DetailsRelation name="X">
<Type name="A">
<Template id="123">
<DetailsRelation>
<Type name="B">
<Template id="111">
<DetailsRelation>
<Type name="C">
<Template id="222">
</Type>
</DetailsRelation>
</Template>
</Type>
</DetailsRelation>
</Template>
<Template id="1321" />
</Type>
</DetailsRelation>
</DetailsStructure>
让我们说第一个结构是我们最初的结构。我们可以为该结构添加一些节点 最终结构编号为2。 但是,一个节点可以包含整个XML块。例如。我们添加了'template id =“111”' 和'template id =“1321”'到第一个结构。 'template id =“111”'有内部结构 ('template id =“222”')以及对内部结构的每次更改(例如删除 内部'template id =“222”')必须在使用'template id =“111”'的任何地方传播。
我们打开通过以下方式描述的对象:
<DetailsStructure>
<DetailsRelation>
<Type name="B">
<Template id="111">
<DetailsRelation>
<Type name="C">
<Template id="222">
</Type>
</DetailsRelation>
</Template>
</Type>
</DetailsRelation>
</DetailsStructure>
并删除一块结构。结果结构:
<DetailsStructure>
<DetailsRelation>
<Type name="B">
<Template id="111"/>
</Type>
</DetailsRelation>
</DetailsStructure>
现在,当我打开First对象结构时,它应该是这样的:
<DetailsStructure>
<DetailsRelation name="X">
<Type name="A">
<Template id="123">
<DetailsRelation>
<Type name="B">
<Template id="111"/>
</Type>
</DetailsRelation>
</Template>
<Template id="1321" />
</Type>
</DetailsRelation>
</DetailsStructure>
总结一下:我们应该能够创建简单的结构,然后通过较小的结构描述更大的结构。 当较小的结构发生变化时 - 它会在较大的结构中传播,而较小的结构则使用较小的结构。
这个问题可以解决吗?这很复杂吗?
答案 0 :(得分:0)
我认为你的XML应该是这样的:
<Devices>
<Device Type="CPU" Id="cpu001">
<Componentes>
. . .
</Components>
</Device>
<Device Type="Motherboard" Id="mtb001">
<Componentes>
<Id>cpu001</Id>
. . .
</Components>
</Device>
<Device Type="Computer" Id="cpt001">
<Componentes>
<Id>mtb001</Id>
. . .
</Components>
</Device>
. . .
<Devices>
这样每个设备只出现一次,可以单独修改。使用它的所有其他设备都会反映更改,因为它们不包含它,它们只引用该单个实例。
这是一种关系结构 - 更适合关系数据库而不是XML。
我认为数据库通常是更好的选择 - XML是表示和传输静态数据的好格式,但如果您想对数据进行更改则不适合。