2009-09-21 127 views
1

可能重复:
How to design storing complex object settings in an xml
XML attribute vs XML elementXml属性vs Xml属性?

有什么标准决定是否事情应该这样做时使用:

<Blur Type="Gaussian", Amount=5></Blur> 

<Blur>Gaussian, 5</Blur> 

如果它是#1,那么你会在括号内放什么?

另外我不知道括号内的值是什么(Gaussian, 5):inside properties

+1

' Gaussian,5'很难重用,因为您在一个字段中混入了两个值(属性?)。 – voyager 2009-09-21 18:13:10

+1

Dupe:http://stackoverflow.com/questions/1455872/ – GEOCHET 2009-09-21 18:13:14

回答

2

使用

<Blur Type="Gaussian" Amount="5"/> 

这些被称为属性,

内iscalled节点

2

的价值这真的取决于该XML将如何被使用。我的一般经验法则是:

  • 对于简单类型(int,double,string,datetime)使用属性。
  • 对于复杂类型,请使用子元素。
6
  1. XML标签内的值称为标记值。

  2. 你的第二个例子是如何不构建XML的例子(一般来说,对于任何数据存储,包括XML,你不想将大于1的属性值捆绑到一个blob中,除非你永远保证这两个值将永远不会被单独使用/查询,捆绑的性能优势非常显着)。

    应该改为

<Blur> 
<Type>Gaussian</Type> 
<Amount>5</Amount> 
</Blur> 

两者之间的选择有时是模糊的,但一个very good set of guidelines exists from IBM

+0

fwiw,重新:第1点,他们被称为“属性” – annakata 2009-09-22 16:31:38

4

好吧,首先第一种形式的不XML用逗号和没有引号。

其次,你在谈论属性VS子元素,这已经涵盖hereherehere并多次在elsewhere

最后,#2门并不是任何合理类型的数据结构。一般情况下:使用关系为元数据的属性,在关系为组合的情况下使用子元素。

+0

-1 *为什么?* – annakata 2009-09-21 18:44:04

+0

不知道为什么这被拒绝,因为它似乎是非常明智的答案... – 2009-09-21 18:45:21

+0

谢谢安娜,我给了+1。 – 2009-09-21 20:17:27

0

我认为这取决于个人喜好,如果你喜欢:

<blur> 
    <type>Gaussian</type> 
    <amount>5</amount> 
</blur> 

<blur type="Gaussian" amount="5" /> 

而且,任何使你解析自己更费力。有时,引用儿童比属性更容易,这显然取决于你将用于解析的语言。