这两者有什么区别,我在什么情况下应该使用哪个:
<person>
<firstname>Joe</firstname>
<lastname>Plumber</lastname>
</person>
对比
<person firstname="Joe" lastname="Plumber" />
感谢
这两者有什么区别,我在什么情况下应该使用哪个:
<person>
<firstname>Joe</firstname>
<lastname>Plumber</lastname>
</person>
对比
<person firstname="Joe" lastname="Plumber" />
感谢
XML有基于元素和基于属性两种不同的格式,在你的例子中,第一种是基于元素的,第二种是基于属性的。
大多数情况下,这两种格式是等效的,但也有一些例外。
基于属性
基于元素
实用
如果您真的关心XML的大小,请尽可能使用属性。需要表示可空值、复杂类型或包含大量文本值时,请使用元素。如果您不关心XML的大小或在传输期间启用了压缩,请使用元素,因为它们更具可扩展性。
背景
在.NET中,XmlSerializer可以将对象的属性序列化成属性或元素。在最近的WCF框架中,DataContract序列化器只能将属性序列化为元素,并且比XmlSerializer更快;原因很明显,在反序列化时它只需要从元素中查找用户数据。
这里有一篇文章也解释了这个问题:Element vs attribute
<address>
属性,您可能不希望将其作为XML属性。这是因为<address>
可能是一个更复杂的元素,由街道地址、城市、国家等组成。我发现以下信息非常有助于简要解释属性与元素的选择:
使用属性的一些问题包括:
属性不能包含多个值(元素可以)
属性不能包含树形结构(元素可以)
属性不易扩展(用于未来的更改)
属性难以阅读和维护。对于数据,请使用元素。对于与数据无关的信息,请使用属性。
属性的顺序不敏感。这可能是优点,也可能是缺点,具体取决于您的情况。
属性不能重复。如果“Joe”有两个名字,请使用节点。