在XML层次结构中添加属性或创建新级别?

在XML层次结构中添加属性或创建新级别?,xml,xsd,maintainability,future-proof,Xml,Xsd,Maintainability,Future Proof,我目前正在编写一个XML文档,它是为只有两个级别的XML层次结构编写的。现在,我想给它添加一个一对多的分类,这将破坏该文件的大部分代码 我可以将该分类添加为一个新级别,也可以将其实现为同一级别上的属性(几乎类似于标记) 当前: <category> <subcategory></subcategory> <category> 提议: <supercategory> <category>

我目前正在编写一个XML文档,它是为只有两个级别的XML层次结构编写的。现在,我想给它添加一个一对多的分类,这将破坏该文件的大部分代码

我可以将该分类添加为一个新级别,也可以将其实现为同一级别上的属性(几乎类似于标记)

当前:

<category>
    <subcategory></subcategory>
<category>

提议:

<supercategory>
    <category>
        <subcategory></subcategory>
    </category>
</supercategory>

或:



哪种方法更易于维护?

对我来说,XML的优点之一是XML元素的层次结构特性非常适合描述对象的层次结构安排,例如在您的案例中。因此,我倾向于选择第一个选项,因为XML结构更类似于数据的结构。这使它更容易阅读、管理和理解,IMHO


也就是说,只有您才能真正地说,让它与您现有的代码库一起工作所需的额外努力是否值得。如果您认为所需的修改太困难/太耗时,那么当然没有什么可以停止您的第二种方式,我只是认为这不是一个优雅的解决方案。

我认为创建一个新级别是更好的解决方案。它遵循您当前的方法(嵌套元素),这很好,您的第一个示例还有一个好处,即原始类别元素本身保持不变

也可以考虑递归定义。这可能是一个更大的重构现在要考虑,但可能避免未来的影响。你的分类是2级,现在是3级,如果你移到4级,你需要添加SuperDuperCategory怎么办

此符号可以是一种替代方法:

<category>
    <category>
        <category></category>
    </category>
</category>

编辑您的帖子,并展示您当前和建议结构的一些简短示例。
<category>
    <category>
        <category></category>
    </category>
</category>