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

前端之家收集整理的这篇文章主要介绍了使用父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>
原文链接:https://www.f2er.com/xml/292493.html

猜你在找的XML相关文章