xml应该代表一个集合还是一个列表?

时间:2010-04-19 19:59:32

标签: xml list set

我一直认为xml就像 set 数据结构一样。即:

<class>
 <person>john</person>
 <person>sarah</person>
</class>

相当于:

<class>
 <person>sarah</person>
 <person>john</person>
</class>

问题一:这两件事在逻辑上是否等同?


你是否可以在xml中制作这样的东西?

<methodCall>
  <param>happy</param>
  <param>sad</param>
</methodCall>

或者您需要这样做:

<methodCall>
  <param arg="1">happy</param>
  <param arg="2">sad</param>
</methodCall>

问题二:这两件事在逻辑上是否相同?


问题三: xml通常被视为集合还是列表?

3 个答案:

答案 0 :(得分:6)

  1. 如果你不关心排序顺序,它们在逻辑上是等价的。
  2. 两者都是合法的XML。它们在逻辑上不等同,因为第二个样本有其他信息。
  3. XML被视为层次结构,而不是集合或列表。
  4. XML可以表示一个列表,它可以表示一个集合。它的结构也不是。拥有多个相同的项目并不是错误,因此在这方面它没有基于设置。

答案 1 :(得分:1)

XML节点构成一个列表,而不是一个集合,但为了更准确,它们实际上更像是树状结构。考虑一下你可以用XML做到这一点:

<example>
  <foo/>
  <foo/>
</example>

显然,如果它是一个集合,则无法访问最后一个/example/foo元素,因为集合中已存在第一个/example/foo元素。但是,无论它们看起来是否相同,它们实际上都是不同的节点,这意味着它们无法使用集合来表示而没有一些额外的工作,而列表是表示XML文档节点的自然结构(尽可能长)因为他们在树上处于相同的“高度”。)

答案 2 :(得分:1)

这可能会更好地分成三个单独的问题,但无论如何:

1)元素的顺序在XML中很重要,但它可能不适合您的应用程序。 考虑代表一本书的XML:显然段落的顺序是至关重要的。因此,第二个示例中的XML就可以了。

2)它们不是等效的XML文档,但您的应用程序可能会选择将它们视为等效文档。或不。 XML是一种描述事物的格式;由应用程序来解释它们。您可能希望查看XML Schema以了解验证文档的方法。

3)元素可以用XML复制,它们的顺序很重要。但是,给定的文档模式可以强制执行唯一性和/或排序规则。因此,可以表示集合和列表。我想你可以默认将原始XML视为有序列表。