Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

The Mit's Blog

En plus d'intégrer et skier, il sait même écrire !
(Blog de Renaud Comte)

Actualités


  • Ancien MVP SharePoint 8 ans ...
    Des projets .Net, SharePoint 2013 ou Office 365 ??

    Contactez-nous :

Archives

SharePoint et l'appel des Web Service : pourquoi pas un peu de Generics/Serialization ?

L'origine de ce post est une remarque très pragmatique de ce cher Sebastien Warin. Travaillant à une des petites fonctionnalités de notre framework interne et du portail Wygwam, il trouvait le call des services SharePoint un peu spartiate.

N'est il pas ???

Du bon vieux flux XML par ci et par la, dans le pur style de SPS 2003

Mais au moins, XML reste la passerelle la plus ouverte non, pas forcement la plus pratique à manipuler.

Surtout en ces périodes PRO objets typés

>>> Ces 2 articles quoi que similaire (1 en VB, l'autre en C#) sont très intéressant. L'idée est de déclarer 3 classes de base qui vont nous permettre via les generics et la serialization de charger directement le flux de sortie du Web Service SharePoint dans de jolies collection de classes bien typées.

Soit :

  • ListItems qui gère les données du noeud de liste ainsi que la sérialisation final
  • Rowdata qui gère les données du noeud enfant
  • BaseListitem qui sert de classe de base à vos propres items

Une fois cette base de code compilé, il vous suffit simplement de faire une classe qui mappe les champs spécifiques de votre liste héritant de la BaseListItem et de la passer en paramètre à votre fonction de sérialisation smile_regular. Du genre (avec la classe MACLASSEListItems)

   spslab.Lists listSvc = new spslab.Lists();
   listSvc.Credentials = new System.Net.NetworkCredential("Administrator", "---------");

   ListItems<MACLASSEListItem> results = null;
   XmlNode resultItems = listSvc.GetListItems(listGuid, string.Empty, null, null, string.Empty, null);
   Console.WriteLine(resultItems.OuterXml);
     
   results = ListItems<MACLASSEListItem>.FromXml(resultItems.OuterXml);
   foreach MACLASSEListItem MAC in results.RowData.ListItems)
   {
            Console.WriteLine(string.Format("Student {0} received a score of {1:##}% on {2} for test '{3}'",
                 ListItems<MACLASSEListItem>.GetDescriptionFromLookupValue( MAC.Student ),
                 MAC.Score * 100, 
                 MAC.TestDate.ToShortDateString(),
                 MAC.Title));
    }

On est déja& un peu plus loin du bon vieux parsing XML non ? Bye bye attribut et xpath
>>>> J'étais sur que ca vous plairait bien !!!

A noter qu'il est toujours bon de se rappeler au souvenir de ce bon ami qu'est le XSD.EXE

Il peut vous faire gagner bien du temps sur la phase de mapping, vraiment.

Mais allons un poil plus loin

Enchaînons donc avec un peu de LINQ for XML

http://weblogs.asp.net/scottgu/archive/2007/08/07/using-linq-to-xml-and-how-to-build-a-custom-rss-feed-reader-with-it.aspx

Voir surtout avec les type anonymes ou vos propres types non ?

Genre

Je vous laisse creuser l'article de Mr Scott, il est parfait comme il est

Que de nouvelle possibilités ...

Que de bonheur en perspective smile_regular

Renaud Comte aka TheMit (J'aime bien les nouveautés des languages .Net)
Member of WygTeam
http://www.wygwam.com

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: mardi 25 mars 2008 15:07 par themit

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Fin des bugs du Microsoft Universal Ad Client SDK par Blog de Jérémy Jeanson le 02-08-2016, 09:03

- [VS2015] Résoudre les problèmes d’installation de fonctionnalités manquantes par Blog de Jérémy Jeanson le 02-07-2016, 09:36

- IIS : Supprimer les HTTP Headers techniques via PowerShell par Blog Technique de Romelard Fabrice le 02-04-2016, 13:37

- Périphérique Windows to Go en environnements virtuel (4/4 BitLocker) par Blog de Jérémy Jeanson le 01-31-2016, 09:51

- Fonctionnel contre technique ? par Blog de Jérémy Jeanson le 01-30-2016, 11:28

- Vous avez aimé yOS ? Vous allez adorer la Communauté aOS ! par Le blog de Patrick [MVP Office 365] le 01-27-2016, 16:12

- Cortana et Band 2 en Français par Blog de Jérémy Jeanson le 01-23-2016, 12:23

- Upgrader vers Windows 10 et Visual Studio 2015 ? Moi ? Jamais ! par Blog de Jérémy Jeanson le 01-23-2016, 08:27

- [ #Collab365 Summit ] la piste française ! par Le blog de Patrick [MVP Office 365] le 01-17-2016, 19:09

- Comment rater un projet? par Blog de Jérémy Jeanson le 12-24-2015, 13:03