zoukankan      html  css  js  c++  java
  • 步步为营 SharePoint 开发学习笔记系列 十、SharePoint web service 开发(下)

    概要

    接下来我们介绍Lists.UpdateListItems 在更新 item做法和UserGroup.GetUserCollectionFromSite()的用法,请先学习步步为营 SharePoint 开发学习笔记系列 八、SharePoint web service 开发(上),你将更容易学习web service的开发

    Lists.UpdateListItems的用法

    更新普通list的item的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>

    更新folder的item的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>

    更新documents的item的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>

    我们更新item时xml格式的处理

            /// <summary>
            /// Get the approved XML Node that will be used for the insert method of the webservice
            /// </summary>
            /// <param name="batch"></param>
            /// <returns></returns>
            private XmlNode GetUpdateXmlNode(List<ListItemBE> batch)
            {
                StringBuilder xml = new StringBuilder();
    
                xml.Append(@"<Batch OnError=""Continue"">");
                foreach (ListItemBE listItem in batch)
                {
                    xml.AppendFormat(@"<Method ID=""{0}"" Cmd=""Update"">", listItem.Id);
                    xml.Append(GetFieldInnerXml(listItem));
                    xml.Append("</Method>");
                }
                xml.Append("</Batch>");
    
                //Get the Batch node
                XmlDocument doc = new XmlDocument();
                doc.LoadXml(xml.ToString());
    
                XmlNode batchNode = doc.SelectSingleNode("//Batch");
                return batchNode;
            }

    更新item时调用sharepoint的web service的处理

            /// <summary>
            /// Insert the items
            /// </summary>
            /// <param name="batch"></param>
            /// <returns></returns>
            private UpdateResultBE UpdateItems(List<ListItemBE> batch)
            {
                //Get the Insert XML Node
                XmlNode batchNode = GetUpdateXmlNode(batch);
                XmlNode result = null;
    
                _logger.Log("Started batch updating list Items");
                try
                {
                    //Call the webservice
                    result = _ws.UpdateListItems(_listProperty.ListName, batchNode);
                }
                catch (Exception ex)
                {
                    _logger.Log(String.Format("Error updating Items. Exception: {0}. Stack Trace: {1}", ex.Message, ex.StackTrace));
                }
    
                _logger.Log("Finished batch updating list items");
    
                //Transform the result into an object
    
                UpdateResultBE insertResult = new UpdateResultBE(result, _listProperty);
                LogInsertResult(insertResult);
    
                return insertResult;
            }

    UserGroup.GetUserCollectionFromSite用法

    首先建立web service的连接,代码如下

            public static SPUserGroupWS.UserGroup GetUserGroupWebService(ListBE listProperty)
            {
                string wsUrl = GetWSUrl(listProperty) + "_vti_bin/usergroup.asmx";
                SPUserGroupWS.UserGroup ws = new SPUserGroupWS.UserGroup();
                ws.Url = wsUrl;
                ws.UseDefaultCredentials = true;
                ws.Credentials = WSHelper.GetCredentials(listProperty.Type);
                return ws;
            }

    我们只取两个简单的字段做个示范

        public class UserInfoBE
        {
            public string ID { get; set; }
            public string NTLoginName { get; set; }
        }

    获取本站点用户列表的方法

            public List<UserInfoBE> GetUserInfoList()
            {
                List<UserInfoBE> userInfoList = new List<UserInfoBE>();
                UserInfoBE listItem;
    
                XmlNode nodes = ws.GetUserCollectionFromSite();
                foreach (XmlNode node in nodes)
                {
                    if (node.Name == "Users")
                    {
                        for (int i = 0; i < node.ChildNodes.Count; i++)
                        {
                            if (node.ChildNodes[i].Name == "User")
                            {
                                listItem = new UserInfoBE();
                                listItem.ID = node.ChildNodes[i].Attributes["ID"].Value;
                                listItem.NTLoginName = node.ChildNodes[i].Attributes["LoginName"].Value;
                                userInfoList.Add(listItem);
                            }
                        }
                    }
                }
                return userInfoList;
            }

    这样就可以通过web service获取站点用户列表信息,但要注意的是,web service的用户名和密码必须是sharepoint站点的管理员.

    总结

    学会sharepoint的web service用户对在做sharepoint站点的数据迁移时很有帮助。

    作者:spring yang

    出处:http://www.cnblogs.com/springyangwc/

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    Java并发实现一(并发的实现之Thread和Runnable的区别)
    Java中的enum
    Eclipse+Maven创建webapp项目
    手机上最简洁的"云笔记"软件
    工具与艺术的结合:浅谈博客的排版规范与样式设计
    页面定制CSS代码初探(四):cnblogs使用Github引用样式
    脑图工具MindNode"附属节点"是什么意思 图解
    页面定制CSS代码初探(三):设置正文最小高度
    Sublime 是自动检测而非自动设置缩进
    苹果操作系统名称演变史 新名称macOS
  • 原文地址:https://www.cnblogs.com/springyangwc/p/2124186.html
Copyright © 2011-2022 走看看