假设O具有这两个等效(至少它们应该是)XML模式。实际的XML最终将由C#解析。我认为第二种方式是“更正确”,因为我将属性作为实际的属性,而不是子元素,是正确的吗?
<?xml version="1.0" encoding="ISO-8859-1"?>
<switch>
<switch_name>switch1</switch_name>
<software_version>1</software_version>
<vendor>Cisco</vendor>
<ip_address>1.1.1.1</ipaddress>
<linecard>
<model_type>12345</model_type>
<fcport>
<slot> 1</slot>
<port> 1</port>
<speed>4</speed>
</fcport>
</linecard>
</switch>
<switch>
<switch name="switch1" version="1" vendor="Cisco" ip_address="1.1.1.1">
<linecard model="12345">
<fcport slot="1" port="1" speed="4">
</fcport>
<linecard>
</switch>
</xml>
答案 0 :(得分:2)
在使用元素或属性属性进行选择时,没有“正确”的方式表示XML中的数据。选择适合你的任何东西。
通常元素会给你更多自由,因为你最终可能有子元素。即if属性是某种类型的列表,表示它在属性中以逗号分隔的值看起来非常非XML。
旁注:"XML schema"通常意味着不同的东西 - XML的结构化架构......我所称的“用XML表示数据”。
答案 1 :(得分:2)
两者都没有比另一个更“正确”,两者都适合你的榜样。没有违反任何规则。
那就是说,我认为我同意W3Schools关于这一点,因为数据应该放在子元素而不是属性中。特别是像IP地址这样的东西就像FEEL一样,应该是一个子元素而不是一个属性。我通常用于元数据的属性,例如自动生成的ID。
如果您以后想要考虑扩展,尤其如此 - 例如,如果要关联多个IP,该怎么办?使用子元素,您可以添加另一个元素,但是使用属性,您必须为每个添加添加一个新的属性名称(ip1,ip2,ip3 ...)。
答案 2 :(得分:0)
关于如何在元素和属性之间进行选择的经典文章如下:
http://xml.coverpages.org/elementsAndAttrs.html
我注意到在页面的末尾引用John Cowan引用我:“初学者总是问这个问题。那些有一点经验的人会热情地表达他们的意见。专家告诉你没有正确答案'。”