这两者之间的区别是什么? 什么时候应该使用它们:
<person> <firstname>Joe</firstname> <lastname>Plumber</lastname> </person>
VS
<person firstname="Joe" lastname="Plumber" />
谢谢
在我的公司,我们倾向于第二种方法。
我们认为“ firstname”和“ lastname”是“ person”节点的 属性,而不是“ person”节点的 子领域。这是一个细微的差别。
在我看来,第二种方法更简洁,可读性/可维护性得到显著改善,这一点非常重要。
当然,这取决于您的应用程序。我不认为存在一个涵盖所有情况的一揽子规则。
属性对顺序不敏感。这可能是优点,也可能是缺点,取决于你的情况。
属性不能复制。如果“ Joe”有两个名字,那么节点是唯一的方法。
将来添加 <address>属性时,您可能不希望将其作为 XML 属性。这是因为 <address>可能是由街道地址、城市、国家等组成的更复杂的元素。
<address>
出于这个原因,您可能需要选择第一个子元素形式,除非您确信该属性不需要进行更深入的操作。第一种形式允许将来有更大的扩展性。
如果您非常关心空间,那么可以压缩 XML。
有以元素为中心的和以属性为中心的 XML,在您的示例中,第一个是以元素为中心的,第二个是 以属性为中心。
大多数情况下,这两种模式是等价的,但也有一些例外。
以属性为中心
以元素为中心
实用
如果您确实关心 XML 的大小,那么只要可能,就使用属性(如果适当的话)。在需要可空、复杂类型或保存大文本值的地方使用元素。如果您不关心 XML 的大小,或者在传输过程中启用了压缩,那么坚持使用元素,因为它们更具可扩展性。
背景资料
在 DOTNET 中,XmlSerializer 可以将对象的属性序列化为属性或元素。 在最近的 WCF 框架中,DataContact 序列化器只能将属性序列化为元素,而且它比 XmlSerializer 更快; 原因很明显,它只需要在反序列化时从元素中查找用户数据。
这里有一篇文章也对此进行了解释 元素与属性
我发现以下信息非常有助于以简短的方式解释属性和元素的选择
使用属性的一些问题是:
属性不能包含多个值(元素可以) 属性不能包含树结构(元素可以) 属性不容易扩展(对于将来的更改) < br >
属性很难阅读和维护。对数据使用元素。对与数据无关的信息使用属性。
来源: http://www.w3schools.com/xml/xml_attributes.asp