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
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.