属性与子节点

时间:2011-06-25 01:46:03

标签: .net xml system.xml

我是XML的新手,我想知道何时应该使用属性, 当我应该使用Child节点时。

我的猜测是,如果我想像索引一样使用该字段,我应该使用属性。

例如,我目前(为了了解XML)制作一个程序来保存日志,所以我有2个主要字段“datetime”和“text” 我想也许“datetime”应该是一个属性

2 个答案:

答案 0 :(得分:1)

关于属性的主要问题是它们对于每个元素都是唯一的。这意味着不能多次使用相同的名称声明属性,因此通常最好使用它们来存储不应具有多个值的内容。另外,由于语法和它们在元素标签中声明的事实,我发现将它们用于与ids等元素紧密相关的事物是有用的。

另一个经验法则是,我不会对具有长值的事物使用属性,因为它会导致杂乱的读取。就像你的日志文本一样。

对于你的具体问题,我会使用一个属性作为时间戳,并将文本放在元素标签之间。

关于XML的另一条建议,特别是因为您刚刚开始,如果您还没有这样做,则使用该语言提供的XML对象来创建和编写XML。将XML手动写入字符串可能会更加冗长,但它可以避免您在中间意外添加非法字符。

例如,如果您是一个具有<在其中创建类似:

<根和GT;   < Log datatime =“sometime”>       这会破坏XML<在那里。   < /日志与GT; <根和GT;

此XML文件将被破坏。 XML对象会自动转义非法值,看起来像

<根和GT;   < Log datatime =“sometime”>       这会破坏XML& lt;在那里。   < /日志与GT; < /根和GT;

我希望这会有所帮助并祝你好运。

答案 1 :(得分:0)

属性不能有CData(特殊字符),但节点可以有。 因此,如果您必须放置CData,则无法将其置于属性中。 这是我在做出决定时考虑的一件大事。