Наиболее эффективное использование LINQ to XML - PullRequest
1 голос
/ 20 января 2011

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

1 Ответ

1 голос
/ 20 января 2011

Чем меньше элементов между вами и желаемыми данными, тем лучше.Но смысл использования структуры 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");

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

...