12.07.2013 Views

Etude exploratoire de Linq - CoDE - de l'Université libre de Bruxelles

Etude exploratoire de Linq - CoDE - de l'Université libre de Bruxelles

Etude exploratoire de Linq - CoDE - de l'Université libre de Bruxelles

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Chapitre 5 : Implémentation Xml<br />

Le recours à <strong>de</strong>s bases <strong>de</strong> données Xml s’est fortement répandu ces <strong>de</strong>rnières années et tout<br />

naturellement <strong>Linq</strong> propose une implémentation pour interagir avec ces structures. Xml est<br />

cependant une technologie difficile à interfacer avec les langages orientés objet, en particulier<br />

lorsque ceux-ci désirent créer du contenu Xml. L’approche classique utilise DOM 13 qui oblige à créer<br />

l’ensemble <strong>de</strong>s éléments avant <strong>de</strong> les rassembler. <strong>Linq</strong> to Xml propose une nouvelle syntaxe pour<br />

créer du contenu Xml, la construction fonctionnelle. Elle permet <strong>de</strong> créer les éléments selon une<br />

structure hiérarchique beaucoup plus compacte. Cette syntaxe est encore plus évi<strong>de</strong>nte dès lors que<br />

nous utilisons Visual Basic 2008, car ce <strong>de</strong>rnier a introduit dans sa <strong>de</strong>rnière version les littéraux Xml.<br />

Avec cela nous pouvons écrire directement le co<strong>de</strong> en Xml, comme dans l’exemple ci<strong>de</strong>ssous<br />

(inspiré <strong>de</strong> [1]) où nous créons un étudiant :<br />

Dim exempleXml As XDocument = _<br />

<br />

<br />

Schoonenbergh<br />

Ecole polytechnique<br />

MA2<br />

<br />

Kleine Daalstraat<br />

79<br />

1930<br />

Zaventem<br />

<br />

<br />

<strong>Linq</strong> to Xml a été pensé pour manipuler du Xml tel que défini par le W3C 14 , c'est-à-dire pour<br />

manipuler directement du contenu Xml sans passer par un intermédiaire. Cela permet d’interagir<br />

avec <strong>de</strong> telles structures tout en restant dans un paradigme objet. La construction fonctionnelle est<br />

supportée par l’assemblage System.Xml.<strong>Linq</strong> et peut être utilisée même sans recours direct à <strong>Linq</strong>.<br />

Plusieurs classes sont définies pour représenter les éléments structurels du langage Xml, citons parmi<br />

elles quelques exemples intéressants. La classe XObject tout d’abord qui est la classe <strong>de</strong> base pour<br />

représenter n’importe quel objet Xml. Cette classe propose <strong>de</strong>s métho<strong>de</strong>s qui représentent toute la<br />

gestion structurelle <strong>de</strong> l’arbre Xml qui sera créé en mémoire. Des métho<strong>de</strong>s telles que AddBeforeSelf<br />

ou AddAfterSelf permettent ainsi d’ajouter un élément à un endroit précis <strong>de</strong> l’arbre. Cette classe<br />

supporte également l’annotation Xml. La classe XStreamingElement contient un arbre d’objets<br />

IEnumerable et peuvent donc faire l’objet <strong>de</strong> requête. Les objets <strong>de</strong> cette classe réalisent<br />

l’exécution différée <strong>de</strong>s requêtes chargeant partiellement le résultat, ce qui permet <strong>de</strong> mieux doser<br />

la quantité d’objets chargés en mémoire, bien utile dans une optique <strong>de</strong> performance. Parlons enfin<br />

<strong>de</strong> la classe XDocument représentant un document Xml. Les objets <strong>de</strong> cette classe n’ont pas besoin<br />

<strong>de</strong> références à un fichier pour être instanciés. Ils sont créés selon le pattern Factory et peuvent être<br />

associés dans le futur à une référence (ou une URI) qui les reliera directement à du contenu existant,<br />

le cas échéant.<br />

13<br />

DOM signifie Document Object Mo<strong>de</strong>l. Il s’agit d’un ensemble <strong>de</strong> règles définissant les premières structures<br />

Xml.<br />

14<br />

World Wi<strong>de</strong> Web Consortium ; organisme <strong>de</strong> standardisation <strong>de</strong>s technologies web.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!