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

    - « Naviguer vers le haut » dans une librairie SharePoint par Blog de Jérémy Jeanson le 10-07-2014, 13:21

    - PowerShell: Comment mixer NAGIOS et PowerShell pour le monitoring applicatif par Blog Technique de Romelard Fabrice le 10-07-2014, 11:43

    - ReBUILD 2014 : les présentations par Le blog de Patrick [MVP Office 365] le 10-06-2014, 09:15

    - II6 Management Compatibility présente dans Windows Server Technical Preview avec IIS8 par Blog de Jérémy Jeanson le 10-05-2014, 17:37

    - Soft Restart sur Windows Server Technical Preview par Blog de Jérémy Jeanson le 10-03-2014, 19:43

    - Non, le certificat public du CA n’est pas un certificat client !!! par Blog de Jérémy Jeanson le 10-03-2014, 00:08

    - Windows Server Technical Preview disponible via MSDN par Blog de Jérémy Jeanson le 10-02-2014, 19:05

    - Focus Sauvegardes SharePoint par Le blog de Patrick [MVP Office 365] le 10-02-2014, 13:11

    - Technofolies, votre évènement numérique de l'année par Le Blog (Vert) d'Arnaud JUND le 09-26-2014, 18:40

    - Xamarin : From Zero to Hero par Fathi Bellahcene le 09-24-2014, 17:35