我正在使用LINQ to XML来解析XML文档。我也有能力影响XML模式的设计。给定的XML元素Person可以将一个或多个Address元素作为子元素。解析为定义XML以使Person包含一个或多个Address节点或者Person更好地包含Addresses节点,而该节点又包含一个或多个Address节点时,它会更有效吗?感谢。
答案 0 :(得分:1)
您与所需数据之间的元素越少越好。但是使用XML结构的关键是要理解数据。要问的一个问题是:是否有必要在每个人下一起分组地址?如果是这样,那么有一个中间元素来描述分组是什么,例如:
<Person>
<Addresses Group="Summer">
<Address Street="123 Street Name" .../>
</Addresses>
<Addresses Group="Winter">
<Address Street="456 Other Street" .../>
</Addresses>
</Person>
如果不是,那么拥有中间元素是没有意义的,它会花费你存储和解析它的开销。
如果您担心在代码中获取子元素集合会有多容易,那么LINQ-to-XML可以轻松处理这两种情况。例如:
<Person>
<Address .../>
<Address .../>
<Phone .../>
<Phone .../>
<Email .../>
</Person>
您可以轻松提取您想要的内容:
var Addresses = personElement.Elements("Address");
var PhoneNumbers = personElement.Elements("Phone");
这意味着您不需要像&lt; Phones&gt;这样的中间元素。或者&lt; EmailAddresses&gt;,如果有必要引入涵盖子元素组的属性/元数据,则只需添加它们。