最有效地使用LINQ to XML

时间:2011-01-20 14:52:09

标签: linq-to-xml xml-parsing

我正在使用LINQ to XML来解析XML文档。我也有能力影响XML模式的设计。给定的XML元素Person可以将一个或多个Address元素作为子元素。解析为定义XML以使Person包含一个或多个Address节点或者Person更好地包含Addresses节点,而该节点又包含一个或多个Address节点时,它会更有效吗?感谢。

1 个答案:

答案 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;,如果有必要引入涵盖子元素组的属性/元数据,则只需添加它们。