我一直认为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通常被视为集合还是列表?
答案 0 :(得分:6)
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视为有序列表。