编写我的第一个复杂的XML模式我可能仍在考虑面向对象而不确定最佳实践是什么。这主要是因为我没有花太多时间在代码中读取XML文件。
我倾向于做的一件事是将所有集合放在它自己的元素中。让我们想出一个场景。我正在为一个人类型做一个模式,我不想保留关于其他人的汽车信息。
我总是这样做:
<xs:element name="Person">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string"/>
<xs:element name="Address" type="xs:string"/>
<xs:element name="Cars">
<xs:complexType>
<xs:sequence>
<xs:element name="Car" type="CarType" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
但据说这是可能的,甚至可能更好:
<xs:element name="Person">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string"/>
<xs:element name="Address" type="xs:string"/>
<xs:element name="Cars" type="CarType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
当我使用C#和/或Linq-to-XML从XML文件中读取哪种方法更好?
我倾向于做我的事情,因为我觉得一个集合应该放在它自己的标签内,而不是像名字和地址一样的单一属性。
答案 0 :(得分:1)
使用LINQ to XML时,可以说直接在Person
节点下使用元素会更好。比较
person.Elements("Car")
与
person.Element("Cars").Elements()
但我个人更喜欢特殊的收藏元素,我认为它更清洁。为什么你认为另一种方式应该更好?谁说的?