2011-01-20 2 views
1

Я использую LINQ to XML для анализа XML-документа. У меня также есть возможность влиять на дизайн XML-схемы. Данный элемент XML Person может иметь один или несколько элементов Address в качестве дочерних элементов. Было бы более эффективным, если синтаксический разбор XML определялся так, чтобы Person содержал один или несколько Узлов Адреса, или было бы лучше, чтобы Person содержал узел Addresses, который, в свою очередь, содержал один или несколько Узлов Адреса? Благодарю.Наиболее эффективное использование LINQ to XML

ответ

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"); 

Это означает, что вам не нужно иметь промежуточные элементы, такие как < телефоны > или <EmailAddresses>, вы бы только добавить если необходимо было ввести атрибуты/метаданные, охватывающие группы дочерних элементов.

+0

Отлично, спасибо. – user361540