如何通过Web服务从模板创建SharePoint 2007列表?

时间:2010-10-27 20:03:07

标签: sharepoint sharepoint-2007

我有一个SharePoint 2007自定义列表,我已将其保存为列表模板。我正在寻找一种通过外部应用程序的Web服务调用从保存的模板创建新列表的方法。

我已经查看了可用于SharePoint 2007 http://msdn.microsoft.com/en-us/library/bb862916(office.12).aspx的基本Web服务,但调用它只会创建一个简单的空自定义列表。

如何从特定模板实例化列表?如何找到模板的功能ID?

1 个答案:

答案 0 :(得分:2)

您可以使用HTTP调试器(如fiddler2)来分析SharePoint Designer为查找此内容而进行的Web服务和远程过程调用。

例如,要获取可用的列表模板,SPD使用DisplayPost RPC命令发出HTTP请求,例如

POST http://[server]/[web]/_vti_bin/owssvr.dll?Cmd=DisplayPost 

xml有效负载:

<?xml version="1.0" encoding="UTF-8"?>
<ows:Batch OnError="Return" Version="12.0.0.000">
 <Method ID="0,GetProjSchema">
  <SetVar Name="Cmd">GetProjSchema</SetVar>
 </Method>
</ows:Batch>
然后,

SPD会解析响应中的ListTemplates节点,以获取模板名称,类型和功能ID的列表。

要从特定模板类型或功能ID创建列表,SPD使用相同的DisplayPost命令,这次使用的消息体类似于:

<?xml version="1.0" encoding="UTF-8"?>
<ows:Batch OnError="Return" Version="12.0.0.000">
 <Method ID="0,NewList">
  <SetVar Name="Cmd">NewList</SetVar>
  <SetVar Name="ListTemplate">108</SetVar>
  <SetVar Name="Title">Discussion Board</SetVar>
  <SetVar Name="FeatureId">00bfea716a4943fab535d15c05500108</SetVar>
  <SetVar Name="RootFolder" />
  <SetVar Name="LangID">1033</SetVar>
 </Method>
</ows:Batch>

有关如何使用RPC协议的示例,请参阅有关将文件上载到SharePoint文档库的this帖子(它使用author.dll而不是owssvr.dll,但技术类似)。< / p>