2011-01-20 4 views
1

J'utilise LINQ to XML pour analyser un document XML. J'ai aussi la possibilité d'influencer la conception du schéma XML. Un élément XML donné, Personne, peut avoir un ou plusieurs éléments d'adresse en tant qu'enfants. Serait-il plus efficace lors de l'analyse d'avoir le XML défini de sorte que Person contienne un ou plusieurs nœuds Address ou serait-il préférable que Person contienne un nœud Addresses contenant à son tour un ou plusieurs nœuds Address? Merci.Utilisation la plus efficace de LINQ to XML

Répondre

1

Les éléments moins entre vous et les données souhaitées, mieux. Mais le point d'utiliser la structure de XML est de donner un sens aux données. Une question à poser est: sera-t-il nécessaire de groupe adresses ensemble sous chaque personne? Si oui, alors il paie pour avoir un élément intermédiaire pour décrire ce que le groupe est, par exemple:

<Person> 
    <Addresses Group="Summer"> 
     <Address Street="123 Street Name" .../> 
    </Addresses> 

    <Addresses Group="Winter"> 
     <Address Street="456 Other Street" .../> 
    </Addresses> 
</Person> 

Si non, alors il n'y a aucun point en ayant l'élément intermédiaire, et il vous en coûtera les frais généraux de stockage et l'analyser.

Si vous êtes inquiet sur la façon dont il sera facile d'obtenir des collections d'éléments enfants dans votre code, LINQ à XML, il est facile de traiter avec les deux scénarios. Par exemple:

<Person> 
    <Address .../> 
    <Address .../> 
    <Phone .../> 
    <Phone .../> 
    <Email .../> 
</Person> 

Vous pouvez extraire ce que vous voulez trivialement:

var Addresses = personElement.Elements("Address"); 
var PhoneNumbers = personElement.Elements("Phone"); 

Cela signifie que vous n'avez pas besoin d'avoir des éléments intermédiaires comme < Téléphones > ou <EmailAddresses>, vous souhaitez seulement ajouter s'il était nécessaire d'introduire des attributs/métadonnées couvrant des groupes d'éléments enfants.

+0

Excellent, merci beaucoup. – user361540