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

- Server Essentials 2016 et site remote web access indisponible par Blog de Jérémy Jeanson le 12-09-2016, 13:10

- Office 365: Utiliser les alertes dans SharePoint Online par Blog Technique de Romelard Fabrice le 11-30-2016, 12:45

- Windows: Comment comparer les outils de copie de fichiers disponibles en mode console avec un script PowerShell par Blog Technique de Romelard Fabrice le 11-18-2016, 11:17

- TFS 2017 est disponible ! par Blog de Jérémy Jeanson le 11-17-2016, 08:04

- Office 365: Configurer l’ouverture des fichiers dans Office Web Apps pour une Librarie Documentaire par Blog Technique de Romelard Fabrice le 11-15-2016, 17:14

- Office 365: Comment gérer les Access Requests dans les sites SharePoint Online par Blog Technique de Romelard Fabrice le 11-10-2016, 15:11

- Windows 2008 R2: Réduire la taille du répertoire system volume information par Blog Technique de Romelard Fabrice le 11-07-2016, 10:01

- UWP et langues indisponibles ? par Blog de Jérémy Jeanson le 11-04-2016, 12:54

- Impossible de se connecter à Windows Server Essentials 2016 par Blog de Jérémy Jeanson le 10-29-2016, 09:55

- Changer la langue d’un Windws Server Core 2016 par Blog de Jérémy Jeanson le 10-27-2016, 17:51