SharePoint 2007 : une méthode rapide pour tout récupérer en XML
Un petit post en réponse à une question que j'ai vu sur le newsgroup français de SharePoint.
En résumé, comment récupérer en flux XML le contenu d'une liste de contenu ?
Naturellement, je répondrais :
- API SharePoint
- Web Service SharePoint
- query Moteur de recherche
Mais bon c'est une réponse pour développeurs ...
Donc, je m'orienterais plus par de l'aggrégation de contenu via le RSS des listes ou du search
Mais voila, ce n'est pas vraiment un format complet pour récupérer du contenu et l'exploiter ...
Cul de sac ?
Mais non mon ami, il reste l'alternative du diable 
Je voulais dire mon cher copain owssvr.dll aka FrontPage RPC.
Ce cher protocol RPC héritage de SPS fonctionne toujours aussi bien (et toujours aussi floue à maitriser) sour SharePoint 2007.
Pour récupérer le flux XML d'une liste, il vous suffit de passer par la commande Display
Exemple :
1) Voici l'adresse d'une liste :
http://o12srv:141/Proposals/Forms/AllItems.aspx
2) On récupére l'ID de la liste en ouvrant le source HTML puis en recherchant le contextinfo :
ctx = new ContextInfo();
ctx.listBaseType = 1;
ctx.listTemplate = 101;
ctx.listName = "{1A15A801-4F2D-49B4-A18F-835AF291A117}";
ctx.view = "{49EC61D9-C6C9-48DB-991B-633D80173F57}";
ctx.listUrlDir = "\u002fProposals";
ctx.HttpPath = "\u002f_vti_bin\u002fowssvr.dll?CS=65001";
ctx.HttpRoot = "http:\u002f\u002fo12srv:141";
ctx.imagesPath = "\u002f_layouts\u002fimages\u002f";
ctx.PortalUrl = "";
ctx.SendToLocationName = "";
ctx.SendToLocationUrl = "";
ctx.RecycleBinEnabled = -1;
ctx.OfficialFileName = "";
ctx.WriteSecurity = "1";
ctx.SiteTitle = "WSS";
ctx.ListTitle = "Proposals";
if (ctx.PortalUrl == "") ctx.PortalUrl = null;
ctx.displayFormUrl = "\u002fProposals\u002fForms\u002fDispForm.aspx";
ctx.editFormUrl = "\u002fProposals\u002fForms\u002fEditForm.aspx";
ctx.isWebEditorPreview = 0;
ctx.ctxId = 1;
g_ViewIdToViewCounterMap[ "{49EC61D9-C6C9-48DB-991B-633D80173F57}" ]= 1;
ctx.CurrentUserId = 1073741823;
ctx.WorkflowsAssociated = true;
3) On appelle le RPC via l'adresse générique : /_vti_bin/owssvr.dll
soit http://o12srv:141/_vti_bin/owssvr.dll
4) On ajoute le querystring de Display simple : ?Cmd=Display&List={ListID}&XMLDATA=TRUE
soit http://o12srv:141/_vti_bin/owssvr.dll?Cmd=Display&List={1A15A801-4F2D-49B4-A18F-835AF291A117}&XMLDATA=TRUE
5) Voici votre XML 
<xml xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
- <s:Schema id="RowsetSchema">
- <s:ElementType name="row" content="eltOnly" rs:CommandTimeout="30">
- <s:AttributeType name="ows_DocIcon" rs:name="Type" rs:number="1">
<s:datatype dt:type="string" dt:maxLength="512" />
</s:AttributeType>
- <s:AttributeType name="ows_LinkFilename" rs:name="Name" rs:number="2">
<s:datatype dt:type="string" dt:maxLength="512" />
</s:AttributeType>
- <s:AttributeType name="ows_Modified" rs:name="Modified" rs:number="3">
<s:datatype dt:type="datetime" dt:maxLength="8" />
</s:AttributeType>
- <s:AttributeType name="ows_Editor" rs:name="Modified By" rs:number="4">
<s:datatype dt:type="string" dt:lookup="true" dt:maxLength="512" />
</s:AttributeType>
</s:ElementType>
</s:Schema>
- <rs:data>
<z:row ows_LinkFilename="Exemple" ows_Modified="2007-06-05 14:42:39" ows_Editor="1073741823;#System Account" />
<z:row ows_DocIcon="docx" ows_LinkFilename="Adventure Works Proposal.docx" ows_Modified="2007-06-05 14:42:39" ows_Editor="1073741823;#System Account" />
<z:row ows_DocIcon="docx" ows_LinkFilename="Contoso Proposal.docx" ows_Modified="2007-06-05 14:42:39" ows_Editor="1073741823;#System Account" />
<z:row ows_DocIcon="docx" ows_LinkFilename="Wingtip Toys Proposal.docx" ows_Modified="2007-06-05 14:42:39" ows_Editor="1073741823;#System Account" />
</rs:data>
</xml>
Simple non ?
A vous maintenant les plaisirs de
- L'XSL
- archivage
- Lots DTS
- composition sous SP Designer
- ...
A bientôt
Annexes :
Renaud Comte aka TheMit (j'ai toujours une solution, faut pas s'inquieter, j'ai été élevé avec MC Gyver et l'Agence Tous Risque
)
Member of WygTeam
http://www.wygwam.com
Technorati tags:
sharepoint,
Moss,
WSS,
RPC,
XML
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 :