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

- Office 365: Script PowerShell pour assigner des droits Full Control à un groupe défini par Blog Technique de Romelard Fabrice le 04-30-2017, 09:22

- SharePoint 20XX: Script PowerShell pour exporter en CSV toutes les listes d’une ferme pour auditer le contenu avant migration par Blog Technique de Romelard Fabrice le 03-28-2017, 17:53

- Les pièges de l’installation de Visual Studio 2017 par Blog de Jérémy Jeanson le 03-24-2017, 13:05

- UWP or not UWP sur Visual Studio 2015 ? par Blog de Jérémy Jeanson le 03-08-2017, 19:12

- Désinstallation de .net Core RC1 Update 1 ou SDK de Core 1 Preview 2 par Blog de Jérémy Jeanson le 03-07-2017, 19:29

- Office 365: Ajouter un utilisateur ou groupe dans la liste des Site collection Administrator d’un site SharePoint Online via PowerShell et CSOM par Blog Technique de Romelard Fabrice le 02-24-2017, 18:52

- Office 365: Comment créer une document library qui utilise les ContentTypeHub avec PowerShell et CSOM par Blog Technique de Romelard Fabrice le 02-22-2017, 17:06

- [TFS] Supprimer en masse les dépendances à SQL Enterprise ou Developer avant de procéder à une migration par Blog de Jérémy Jeanson le 02-20-2017, 20:30

- Office 365: Attention au volume utilisé par les fichiers de Thèmes de SharePoint Online par Blog Technique de Romelard Fabrice le 02-07-2017, 18:19

- [SCVMM] Supprimer une machine bloquée par Blog de Jérémy Jeanson le 01-31-2017, 21:22