sharepoint Lists Web service 用法

概述

在sharepoint 项目中,后期做数据迁移时,会用到sharepoint的web service来完成把数据导入sharepoint站点的功能。

web service 名称:

http://[site]/_vti_bin/Lists.asmx

 

我们用它来新增,修改或者删除当前站点特定list 的item操作。

调用的方法:

[SoapDocumentMethodAttribute("http://schemas.microsoft.com/sharepoint/soap/UpdateListItems", RequestNamespace="http://schemas.microsoft.com/sharepoint/soap/", ResponseNamespace="http://schemas.microsoft.com/sharepoint/soap/", Use=SoapBindingUse.Literal, ParameterStyle=SoapParameterStyle.Wrapped)] 

public XmlNode UpdateListItems (

	string listName,

	XmlNode updates

)

 

 

listName:当前站点list的名字。

操作list的item则通过XmlNode来完成。

更改普通list里item对应field Name的xml代码:

<Batch OnError="Continue" ListVersion="1" 

ViewName="270C0508-A54F-4387-8AD0-49686D685EB2">

   <Method ID="1" Cmd="Update">

      <Field Name="ID">4<Field>

      <Field Name="Field_Name">Value</Field>

   </Method>

   <Method ID="2" Cmd="Update">

      <Field Name="ID" >6</Field>

      <Field Name="Field_Name">Value</Field>

   </Method>

</Batch>

 

新增list里item的xml代码:

<Batch OnError="Continue" ListVersion="1" 

ViewName="270C0508-A54F-4387-8AD0-49686D685EB2">

   <Method ID="1" Cmd="New">

      <Field Name='ID'>New</Field>

      <Field Name="Title">Value</Field>

      <Field Name="Date_Column">2007-3-25</Field>

      <Field Name="Date_Time_Column">

         2006-1-11T09:15:30Z</Field>

   </Method>

</Batch>

 

 

删除list里item的xml代码:

<Batch OnError="Continue" ListVersion="1" 

ViewName="270C0508-A54F-4387-8AD0-49686D685EB2">

   <Method ID="1" Cmd="Delete">

      <Field Name='ID'>2</Field>

   </Method>

   <Method ID="2" Cmd="Delete">

      <Field Name='ID'>8</Field>

   </Method>

</Batch>

 

 

document libraries操作:

新建文件夹xml的代码:

<Batch OnError="Continue" PreCalc="TRUE" 

ListVersion="0" 

ViewName="{EF2F5A21-0FD0-4654-84ED-112B4F5A48F8}">

   <Method ID="1" Cmd="New">

      <Field Name="ID">New</Field>

      <Field Name="FSObjType">1</Field>

      <Field Name="BaseName">Name</Field>

   </Method>

</Batch>

 

 

 

更新文件夹的xml代码:

<Batch OnError="Continue" PreCalc="TRUE" 

ListVersion="0" 

ViewName="{EF2F5A21-0FD0-4654-84ED-112B4F5A48F8}">

   <Method ID="1" Cmd="Update">

      <Field Name="ID">3</Field>

      <Field Name="owshiddenversion">1</Field>

      <Field Name="FileRef">

         http://Server/[sites/][Site/]Shared 

         Documents/Folder</Field>

      <Field Name="FSObjType">1</Field>

      <Field Name="BaseName">Name</Field>

   </Method>

</Batch>

 

 

删除文件夹xml代码:

<Batch OnError="Continue" PreCalc="TRUE" 

ListVersion="0" 

ViewName="{EF2F5A21-0FD0-4654-84ED-112B4F5A48F8}">

   <Method ID="1" Cmd="Delete">

      <Field Name="ID">4</Field>

      <Field Name="FileRef">

         http://Server/[sites/][Site/]Shared 

         Documents/Folder</Field>

   </Method>

</Batch>

 

 

更新文件夹里文件的xml代码:

<Batch OnError="Continue" PreCalc="TRUE" 

ListVersion="0" 

ViewName="{EF2F5A21-0FD0-4654-84ED-112B4F5A48F8}">

   <Method ID="1" Cmd="Update">

      <Field Name="ID">2</Field>

      <Field Name="owshiddenversion">1</Field>

      <Field Name="FileRef">

         http://Server/[sites/][Site/]Shared 

         Documents/File</Field>

      <Field Name="BaseName">Name</Field>

   </Method>

</Batch>

 

 

删除文件夹里文件的xml代码:

<Batch OnError="Continue" PreCalc="TRUE" 

ListVersion="0" 

ViewName="{EF2F5A21-0FD0-4654-84ED-112B4F5A48F8}">

   <Method ID="1" Cmd="Delete">

      <Field Name="ID">3</Field>

      <Field Name="FileRef">

         http://Server/[sites/][Site/]Shared 

         Documents/File</Field>

   </Method>

</Batch>

 

 

调用方法:

Web_Reference_Folder.Lists listService = new Web_Reference_Folder.Lists();

listService.Credentials= System.Net.CredentialCache.DefaultCredentials;



string strBatch = "<Method ID='1' Cmd='Update'>" + 

    "<Field Name='ID'>4</Field>" +

    "<Field Name='Field_Number'>999</Field></Method>" +

    "<Method ID='2' Cmd='Update'><Field Name='ID' >6</Field>" +

    "<Field Name='Field_DateTime'>

        2003-11-11T09:15:30Z</Field></Method>"; 



XmlDocument xmlDoc = new System.Xml.XmlDocument();



System.Xml.XmlElement elBatch = xmlDoc.CreateElement("Batch");



elBatch.SetAttribute("OnError","Continue");

elBatch.SetAttribute("ListVersion","1");

elBatch.SetAttribute("ViewName",

    "0d7fcacd-1d7c-45bc-bcfc-6d7f7d2eeb40");



elBatch.InnerXml = strBatch;



XmlNode ndReturn = listService.UpdateListItems("List_Name", elBatch);



MessageBox.Show(ndReturn.OuterXml);

 

 

返回XmlNode代码的格式:

<Results xmlns="http://schemas.microsoft.com/sharepoint/soap/">

   <Result ID="1,Update">

      <ErrorCode>0x00000000</ErrorCode>

      <z:row ows_ID="4" ows_Title="Title" 

         ows_Modified="2003-06-19 20:31:21" 

         ows_Created="2003-06-18 10:15:58" 

         ows_Author="3;#User1_Display_Name" 

         ows_Editor="7;#User2_Display_Name" ows_owshiddenversion="3" 

         ows_Attachments="-1" 

         ows__ModerationStatus="0" ows_LinkTitleNoMenu="Title" 

         ows_LinkTitle="Title" 

         ows_SelectTitle="4" ows_Order="400.000000000000" 

         ows_GUID="{4962F024-BBA5-4A0B-9EC1-641B731ABFED}" 

         ows_DateColumn="2003-09-04 00:00:00" 

         ows_NumberColumn="791.00000000000000" 

         xmlns:z="#RowsetSchema" />

   </Result>

   <Result ID="2,Update">

      <ErrorCode>0x00000000</ErrorCode>

      <z:row ows_ID="6" ows_Title="Title" 

         ows_Modified="2003-06-19 20:31:22" 

         ows_Created="2003-06-18 19:07:14" 

         ows_Author="2;#User1_Display_Name" 

         ows_Editor="6;#User2_Display_Name" ows_owshiddenversion="4" 

         ows_Attachments="0" ows__ModerationStatus="0" 

         ows_LinkTitleNoMenu="Title" 

         ows_LinkTitle="Title" ows_SelectTitle="6" 

         ows_Order="600.000000000000" 

         ows_GUID="{2E8D2505-98FD-4E3E-BFDA-0C3DEBE483F7}" 

         ows_DateColumn="2003-06-23 00:00:00" 

         ows_NumberColumn="9001.00000000000000" 

         xmlns:z="#RowsetSchema" />

   </Result>

   ...

</Results>

 

 

取返回值的方法:

            foreach (XmlNode node in nodes)

            {

                if (node.Name == "rs:data")

                {

                    for (int i = 0; i < node.ChildNodes.Count; i++)

                    {

                        if (node.ChildNodes[i].Name == "z:row")

                        {

                            

                            string ID = node.ChildNodes[i].Attributes["ows_ID"].Value;

                            string Title = node.ChildNodes[i].Attributes["ows_Title"].Value;



                        }

                    }

                }

            }

 

 

总结

简单介绍了Lists.UpdateListItems (string listName,XmlNode node)的用法。

你可能感兴趣的:(web Service)