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

时间:2011-03-02 19:17:09

标签: xml xsd maintainability future-proof

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

我可以将该分类添加为新级别,或者我可以将其作为同一级别的属性实现(几乎像标记)。

电流:

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

提出:

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

或:

<category supercategory="">
    <subcategory></subcategory>
</category>

哪种方法更易于维护?

2 个答案:

答案 0 :(得分:0)

对我而言,XML的优势之一是XML元素的分层特性非常适合描述对象的分层排列,例如在您的情况下。因此,我倾向于选择您的第一个选项,因为您的XML结构更类似于数据结构。这使得阅读,管理和理解更加容易,恕我直言。

那就是说,只有你真的可以说,使它与你现有的代码库一起工作所需的额外努力是值得的。如果您认为所需的修改过于困难/耗时,那么肯定没有什么可以阻止您的第二种方式,我只是觉得它不是一个优雅的解决方案。

答案 1 :(得分:0)

我认为创造一个新的水平是更好的解决方案。它遵循你当前的方法(嵌套元素),这是好的,你的第一个例子也有一个好处,即原始的Category元素本身保持不变。

您还可以考虑递归定义。这可能是现在要考虑的更大的重构,但可能会避免未来的影响。你的类别是2级,现在它们是3级,如果你移动到4并且需要添加SuperDuperCategory,该怎么办?

这种表示法可以替代:

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