概述
在sharepoint 项目中,后期做数据迁移时,会用到sharepoint的web service来完成把数据导入sharepoint站点的功能。
web service 名称:
http://[site]/_vti_bin/Lists.asmx
我们用它来新增,修改或者删除当前站点特定list 的item操作。
调用的方法:
2 |
public XmlNode UpdateListItems ( |
listName:当前站点list的名字。
操作list的item则通过XmlNode来完成。
更改普通list里item对应field Name的xml代码:
01 |
<Batch OnError= "Continue" ListVersion= "1" |
02 |
ViewName= "270C0508-A54F-4387-8AD0-49686D685EB2" > |
03 |
<Method ID= "1" Cmd= "Update" > |
04 |
<Field Name= "ID" >4<Field> |
05 |
<Field Name= "Field_Name" >Value</Field> |
07 |
<Method ID= "2" Cmd= "Update" > |
08 |
<Field Name= "ID" >6</Field> |
09 |
<Field Name= "Field_Name" >Value</Field> |
新增list里item的xml代码:
01 |
<Batch OnError= "Continue" ListVersion= "1" |
02 |
ViewName= "270C0508-A54F-4387-8AD0-49686D685EB2" > |
03 |
<Method ID= "1" Cmd= "New" > |
04 |
<Field Name= 'ID' >New</Field> |
05 |
<Field Name= "Title" >Value</Field> |
06 |
<Field Name= "Date_Column" >2007-3-25</Field> |
07 |
<Field Name= "Date_Time_Column" > |
08 |
2006-1-11T09:15:30Z</Field> |
删除list里item的xml代码:
1 |
<Batch OnError= "Continue" ListVersion= "1" |
2 |
ViewName= "270C0508-A54F-4387-8AD0-49686D685EB2" > |
3 |
<Method ID= "1" Cmd= "Delete" > |
4 |
<Field Name= 'ID' >2</Field> |
6 |
<Method ID= "2" Cmd= "Delete" > |
7 |
<Field Name= 'ID' >8</Field> |
document libraries操作:
新建文件夹xml的代码:
1 |
<Batch OnError= "Continue" PreCalc= "TRUE" |
3 |
ViewName= "{EF2F5A21-0FD0-4654-84ED-112B4F5A48F8}" > |
4 |
<Method ID= "1" Cmd= "New" > |
5 |
<Field Name= "ID" >New</Field> |
6 |
<Field Name= "FSObjType" >1</Field> |
7 |
<Field Name= "BaseName" >Name</Field> |
更新文件夹的xml代码:
01 |
<Batch OnError= "Continue" PreCalc= "TRUE" |
03 |
ViewName= "{EF2F5A21-0FD0-4654-84ED-112B4F5A48F8}" > |
04 |
<Method ID= "1" Cmd= "Update" > |
05 |
<Field Name= "ID" >3</Field> |
06 |
<Field Name= "owshiddenversion" >1</Field> |
07 |
<Field Name= "FileRef" > |
09 |
Documents/Folder</Field> |
10 |
<Field Name= "FSObjType" >1</Field> |
11 |
<Field Name= "BaseName" >Name</Field> |
删除文件夹xml代码:
01 |
<Batch OnError= "Continue" PreCalc= "TRUE" |
03 |
ViewName= "{EF2F5A21-0FD0-4654-84ED-112B4F5A48F8}" > |
04 |
<Method ID= "1" Cmd= "Delete" > |
05 |
<Field Name= "ID" >4</Field> |
06 |
<Field Name= "FileRef" > |
08 |
Documents/Folder</Field> |
更新文件夹里文件的xml代码:
01 |
<Batch OnError= "Continue" PreCalc= "TRUE" |
03 |
ViewName= "{EF2F5A21-0FD0-4654-84ED-112B4F5A48F8}" > |
04 |
<Method ID= "1" Cmd= "Update" > |
05 |
<Field Name= "ID" >2</Field> |
06 |
<Field Name= "owshiddenversion" >1</Field> |
07 |
<Field Name= "FileRef" > |
09 |
Documents/File</Field> |
10 |
<Field Name= "BaseName" >Name</Field> |
删除文件夹里文件的xml代码:
01 |
<Batch OnError= "Continue" PreCalc= "TRUE" |
03 |
ViewName= "{EF2F5A21-0FD0-4654-84ED-112B4F5A48F8}" > |
04 |
<Method ID= "1" Cmd= "Delete" > |
05 |
<Field Name= "ID" >3</Field> |
06 |
<Field Name= "FileRef" > |
08 |
Documents/File</Field> |
调用方法:
01 |
Web_Reference_Folder.Lists listService = new Web_Reference_Folder.Lists(); |
02 |
listService.Credentials= System.Net.CredentialCache.DefaultCredentials; |
04 |
string strBatch = "<Method ID='1' Cmd='Update'>" + |
05 |
"<Field Name='ID'>4</Field>" + |
06 |
"<Field Name='Field_Number'>999</Field></Method>" + |
07 |
"<Method ID='2' Cmd='Update'><Field Name='ID' >6</Field>" + |
08 |
"<Field Name= 'Field_DateTime' > |
09 |
2003-11-11T09:15:30Z</Field></Method>"; |
11 |
XmlDocument xmlDoc = new System.Xml.XmlDocument(); |
13 |
System.Xml.XmlElement elBatch = xmlDoc.CreateElement( "Batch" ); |
15 |
elBatch.SetAttribute( "OnError" , "Continue" ); |
16 |
elBatch.SetAttribute( "ListVersion" , "1" ); |
17 |
elBatch.SetAttribute( "ViewName" , |
18 |
"0d7fcacd-1d7c-45bc-bcfc-6d7f7d2eeb40" ); |
20 |
elBatch.InnerXml = strBatch; |
22 |
XmlNode ndReturn = listService.UpdateListItems( "List_Name" , elBatch); |
24 |
MessageBox.Show(ndReturn.OuterXml); |
返回XmlNode代码的格式:
02 |
<Result ID= "1,Update" > |
03 |
<ErrorCode>0x00000000</ErrorCode> |
04 |
<z:row ows_ID= "4" ows_Title= "Title" |
05 |
ows_Modified= "2003-06-19 20:31:21" |
06 |
ows_Created= "2003-06-18 10:15:58" |
07 |
ows_Author= "3;#User1_Display_Name" |
08 |
ows_Editor= "7;#User2_Display_Name" ows_owshiddenversion= "3" |
10 |
ows__ModerationStatus= "0" ows_LinkTitleNoMenu= "Title" |
12 |
ows_SelectTitle= "4" ows_Order= "400.000000000000" |
13 |
ows_GUID= "{4962F024-BBA5-4A0B-9EC1-641B731ABFED}" |
14 |
ows_DateColumn= "2003-09-04 00:00:00" |
15 |
ows_NumberColumn= "791.00000000000000" |
16 |
xmlns:z= "#RowsetSchema" /> |
18 |
<Result ID= "2,Update" > |
19 |
<ErrorCode>0x00000000</ErrorCode> |
20 |
<z:row ows_ID= "6" ows_Title= "Title" |
21 |
ows_Modified= "2003-06-19 20:31:22" |
22 |
ows_Created= "2003-06-18 19:07:14" |
23 |
ows_Author= "2;#User1_Display_Name" |
24 |
ows_Editor= "6;#User2_Display_Name" ows_owshiddenversion= "4" |
25 |
ows_Attachments= "0" ows__ModerationStatus= "0" |
26 |
ows_LinkTitleNoMenu= "Title" |
27 |
ows_LinkTitle= "Title" ows_SelectTitle= "6" |
28 |
ows_Order= "600.000000000000" |
29 |
ows_GUID= "{2E8D2505-98FD-4E3E-BFDA-0C3DEBE483F7}" |
30 |
ows_DateColumn= "2003-06-23 00:00:00" |
31 |
ows_NumberColumn= "9001.00000000000000" |
32 |
xmlns:z= "#RowsetSchema" /> |
取返回值的方法:
01 |
foreach (XmlNode node in nodes) |
03 |
if (node.Name == "rs:data" ) |
05 |
for ( int i = 0; i < node.ChildNodes.Count; i++) |
07 |
if (node.ChildNodes[i].Name == "z:row" ) |
10 |
string ID = node.ChildNodes[i].Attributes[ "ows_ID" ].Value; |
11 |
string Title = node.ChildNodes[i].Attributes[ "ows_Title" ].Value; |
总结
简单介绍了Lists.UpdateListItems (string listName,XmlNode node)的用法。