使用父XML元素作为重复出现的子元素的容器?

假设您希望允许某些特定的 XML元素出现0次.例如,< record>元素可以多次出现:
<repository>
  <record>Record 1</record>
  <record>Record 2</record>
  <record>Record 3</record>
</repository>

是否有任何令人信服的理由将父元素作为容器包含在内?例如,以下使用< recordSet>包含< record>的元素内容:

<repository>
  <recordSet>
    <record>Record 1</record>
    <record>Record 2</record>
    <record>Record 3</record>
  </recordSet>
</repository>

在提出这个问题之前我试图找到任何相关的问题,所以如果已经被问到我,我会道歉.提前感谢任何和所有输入!

编辑 – 2009年7月22日:

感谢大家的出色反馈! (我会评论/投票给人,但我还没有足够的声望点.)我可能会继续这条路线,我也想感谢@ 16bytes的建议,包括简单命名父母通过使用复数的重复子元素.

拥有父元素可以更简单地识别XML的各个部分,并使处理程序更容易将子元素映射到集合.
如果你有一个系统禁止使用属性(有些人这样做,那很烦人),你还需要使用包装元素来区分属于特定子元素的属性(如id).

除此之外,省略父元素是有效的,并且可以使文件明显减少冗长.

在您的第一个示例中,用户元素可能与记录混在一起,这是有效的,但可能很难发现:

<repository>
  <record>Record 1</record>
  <record>Record 2</record>
  <user>Bill</user>
  <record>Record 3</record>
</repository>

而对于周围的元素,您可以分离集合,并具有该集合的多个实例:

<repositories>
  <users>
    <user>Bill</user>
  </users>
  <repository>
    <id>id1</id>
    <recordSet>
      <id>recordSet1</id>
      <record>Record 1</record>
      <record>Record 2</record>
      <record>Record 3</record>
    </recordSet>
    <recordSet>
      <id>recordSet2</id>
      <record>Record 1</record>
      <record>Record 2</record>
      <record>Record 3</record>
    </recordSet>
  </repository>
  <repository>
    <id>id2</id>
    <recordSet>
      <record>Record 1</record>
      <record>Record 2</record>
      <record>Record 3</record>
    </recordSet>
  </repository>
</repositories>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇