【问题标题】:Add an attribute or create a new level in the XML hierarchy?在 XML 层次结构中添加属性或创建新级别?
【发布时间】:2011-07-07 12:46:57
【问题描述】:

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

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

当前:

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

建议:

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

或:

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

哪种方法更易于维护?

【问题讨论】:

  • 编辑您的帖子并展示您当前和建议结构的一些简短示例。

标签: xml xsd maintainability future-proof


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    这种表示法可以作为替代:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-04
      相关资源
      最近更新 更多