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

Petit sample de binding avec les Web Services de SharePoint

En lisant, codant de petits bouts de code et validant quelques fonctionnalités avec les Web Services, je me suis rappellé le bonheur du XML de retour de ces chers ASMX : http://www.developer.com/tech/article.php/3104621

A vrai dire, il existe différentes écoles :

1) les Pro XML
>>> genre :  puriste de XPath
N'oubliez pas de rajouter les namespace SharePoint pour pouvoir faire vos requêtes

private XmlNodeList RunXPathQuery(XmlNode XmlNodeToQuery, string 
XPathQuery)
{
    // load the complete XML node and all its child nodes into a XML document
    XmlDocument Document = new XmlDocument();
    Document.LoadXml(XmlNodeToQuery.OuterXml);

    // all the possible namespaces used by SharePoint and a randomly choosen 
prefix
    const string SharePointNamespacePrefix = "sp";
    const string SharePointNamespaceURI = 
"http://schemas.microsoft.com/sharepoint/soap/";
    const string ListItemsNamespacePrefix = "z";
    const string ListItemsNamespaceURI = "#RowsetSchema";
    const string PictureLibrariesNamespacePrefix = "y";
    const string PictureLibrariesNamespaceURI = 
"http://schemas.microsoft.com/sharepoint/soap/ois/";
    const string WebPartsNamespacePrefix = "w";
    const string WebPartsNamespaceURI = 
"http://schemas.microsoft.com/WebPart/v2";
    const string DirectoryNamespacePrefix = "d";
    const string DirectoryNamespaceURI = 
"http://schemas.microsoft.com/sharepoint/soap/directory/";

    // now associate with the xmlns namespaces (part of all XML nodes returned
    // from SharePoint) a namespace prefix which we can then use in the queries
    XmlNamespaceManager NamespaceMngr = new 
XmlNamespaceManager(Document.NameTable);
    NamespaceMngr.AddNamespace(SharePointNamespacePrefix, 
SharePointNamespaceURI);
    NamespaceMngr.AddNamespace(ListItemsNamespacePrefix, 
ListItemsNamespaceURI);
    NamespaceMngr.AddNamespace(PictureLibrariesNamespacePrefix, 
PictureLibrariesNamespaceURI);
    NamespaceMngr.AddNamespace(WebPartsNamespacePrefix, WebPartsNamespaceURI);
    NamespaceMngr.AddNamespace(DirectoryNamespacePrefix, 
DirectoryNamespaceURI);

    // run the XPath query and return the result nodes
    return Document.SelectNodes(XPathQuery, NamespaceMngr);
}

http://www.csharphelp.com/archives4/archive602.html

 

2) Les PRO objet
>>> genre  : une classe typé por favor

Merci le XDS.exe et l'XMLSerialiser
http://blogs.developpeur.org/themit/archive/2005/04/15/6012.aspx

http://www.peterverster.co.uk/blog/2007/02/07/Programming+MOSS+WSS+V3+Web+Service+API+Part+1.aspx

 

3) les PRO .Net advance
>>> genre : les generics ou rien

   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)
   {...}

http://blogs.developpeur.org/themit/archive/2008/03/25/sharepoint-et-l-appel-des-web-service-pourquoi-pas-un-peu-de-generics-serialization.aspx

     

    4) Le developpeur landa
    >>> genre : je veux juster binder ma liste s i m p l e m e n t !!! (et je le comprends bien)

    Dites donc merci au DataSet et sa méthode ReadXml smile_wink

       sharepointservices.Lists sharepointLists = new sharepointservices.Lists();
       sharepointLists.Credentials = new System.Net.NetworkCredential(username, password);
    
       XmlNode node = sharepointLists.GetListItems(listname,string.Empty,null,null,string.Empty,null);
       XmlTextReader xmlTextReader = new XmlTextReader(node.OuterXml, XmlNodeType.Element, null);
    
       DataSet dataSet = new DataSet();
       dataSet.ReadXml (xmlTextReader);

    http://blogs.officezealot.com/mauro/archive/2008/05/17/21034.aspx

    5) le mix du tout
    >>> Eh oui, toutes les méthodes se valent après tout mais elles ont toutes des impactes en termes de complexité ou de charge. A vous de bien pondérer dans vos choix. (ce lien peut vous aiguiller : http://weblogs.asp.net/paulballard/archive/2005/05/08/406197.aspx)

     

    Renaud Comte aka TheMit (SPeut le plus, code le moins )
    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 20 mai 2008 08:15 par themit

    Commentaires

    Pas de commentaires

    Les commentaires anonymes sont désactivés

    Les 10 derniers blogs postés

    - [Refactoring] ReSharper pour Visual Studio 2010 (Preview) par Thomas Jaskula le il y a 6 heures et 1 minutes

    - [Refactoring] Analyser vos exceptions avec ReSharper Exceptional par Thomas Jaskula le il y a 7 heures et 15 minutes

    - SharePoint 2007 : patterns & practices SharePoint Guidance par Philippe Sentenac [MVP SharePoint] le il y a 20 heures et 54 minutes

    - [Visual Studio 2010] Les tests cases c’est bien, mais je vais devoir tout réécrire ? par Etienne Margraff le il y a 21 heures et 51 minutes

    - MVP[Gribouillon].AddYear par The Grib's Lair [Sébastien PICAMELOT - MVP SharePoint] le il y a 22 heures et 6 minutes

    - Clinique INSIA - Projet de fin d’Etudes (Silverlight 3 MVVM et OutOfBrowser, WCF, TFS) - Part 1 par David REI le 07-02-2009, 23:38

    - C’est la crise ? Bah pourquoi cramer du budget pub alors ? par Nix's Blog le 07-02-2009, 15:31

    - Soyons MVP ! par TheSaib .NET blog le 07-02-2009, 12:15

    - SharePoint : Gestion des Erreurs 6398, 7076 et 6482 par Blog Technique de Romelard Fabrice le 07-02-2009, 11:53

    - EF avec WPF par Matthieu MEZIL le 07-02-2009, 10:18