博客地址:http://blog.csdn.net/FoxDave

本文介绍如何利用SharePoint客户端对象模型(.NET)逐级获取Office 365网站中List的内容,仅仅是示例,没有讲究太多东西。

代码如下:

ClientContext ctx = new ClientContext("<your sharepoint site url>");
ctx.Credentials = new SharePointOnlineCredentials("username", GetSecurePassword("password"));
Web web = ctx.Web; List list = web.Lists.GetByTitle("List");
ctx.Load(list, l => l.RootFolder, l => l.RootFolder.ServerRelativeUrl);
ctx.ExecuteQuery();
stringBuilder = RetrieveItems(ctx, list, list.RootFolder, 0); Console.WriteLine(stringBuilder.ToString());

首先第一部分是构建SharePoint Online的Context对象,授权认证那里使用SharePointOnlineCredentials这个对象,这个对象构造函数的参数需要类型为字符串的用户名和类型为SecureString的密码,这里使用GetSecurePassword这个方法来构建密码参数,代码将在下面列出。

第二部分,利用Context对象获取指定的List,进而获取里面的内容。逐级获取需要一个递归去实现,如上的RetrievevItems方法,同样会在下面说明。

最后输出获取的内容,stringBuilder为全局的StringBuilder对象,用来保存读取到的信息。

GetSecurePassword方法的代码如下:

private static SecureString GetSecurePassword(string pwd)
{
//Get the user's password as a SecureString
SecureString securePassword = new SecureString();
char[] pwdArray = pwd.ToCharArray();
for (int i = 0; i < pwdArray.Length; i++)
{
securePassword.AppendChar(pwdArray[i]);
}
return securePassword;
}

方法的返回类型为SecureString。方法体中,首先构建一个SecureString对象,并将密码字符串转成char数组,然后执行AppendChar方法把依次将char数组的字符传入,最后返回这个对象就可以了。

RetrievevItems方法的代码如下:

private static StringBuilder RetrieveItems(ClientContext ctx, List list, Folder folder, int level)
{
level++;
CamlQuery query = new CamlQuery();
query.FolderServerRelativeUrl = folder.ServerRelativeUrl;
ListItemCollection listItems = list.GetItems(query);
ctx.Load(listItems);
ctx.ExecuteQuery();
foreach (ListItem item in listItems)
{
if (item.FileSystemObjectType == FileSystemObjectType.Folder)
{
ctx.Load(item.Folder);
ctx.ExecuteQuery();
stringBuilder.AppendLine(string.Format("Level: {0}, Folder: {1}", level, item["Title"]));
return RetrieveItems(ctx, list, item.Folder, level);
}
else
{
stringBuilder.AppendLine(string.Format("Level: {0}, Item: {1}", level, item["Title"]));
}
}
return stringBuilder;
}

参数level表示当前的深度。在使用客户端对象模型获取列表的Item时,需要传入一个CamlQuery对象,为该对象的FolderServerRelativeUrl属性赋值来控制要获取Item的位置。然后对获取到的当前级别的Item集合进行遍历,如果存在文件夹,则进一步遍历,通过这个递归方法进行了实现。

SharePoint开发——利用CSOM逐级获取O365中SharePoint网站的List内容的更多相关文章

  1. android 利用反射机制获取drawable中所有的图片资源

    public List<Map<String,Object>> getGridData() { list=new ArrayList<Map<String,Obje ...

  2. springboot @Value 获取计算机中绝对路径文件的内容

    默认情况下使用 @Value("aaa.txt") private Resource txtResource; 这样获取到的是项目classpath 下的 aaa.txt 如果想获 ...

  3. 微信公众平台开发—利用OAuth2.0获取微信用户基本信息

    在借鉴前两篇获取微信用户基本信息的基础下,本人也总结整理了一些个人笔记:如何通过OAuth2.0获取微信用户信息 1.首先在某微信平台下配置OAuth2.0授权回调页面: 2.通过appid构造url ...

  4. (一)利用 mdb 调试获取 nvlist_t 中 nvpair_t(name/value) 对

    服务器:192.168.2.122 root@2236:~# mdb -k> ::spaADDR                 STATE NAME                       ...

  5. 利用PPPOE认证获取路由器中宽带账号密码

    前言 回家时买了一台极路由准备换掉家里老掉牙的阿里路由器,想进后台看一下宽带账号密码,咦???后台密码是什么来着??? 我陷入了沉思,家里的路由器一般都是pppoe拨号,而路由器在与pppoe认证服务 ...

  6. 利用函数回调获取setInterval中返回的值

    我们都知道,定时器里面想返回值如果你用return根本没作用,那么怎么拿到定时器所返回的值呢, 现在只需要利用回调函数,给主函数传一个函数类型的参数callback,然后把想要返回的num再传给cal ...

  7. java利用反射机制获取list中的某个字段并以list形式返回

    public static<T> List<Object> listToList(Collection<T> list,String fieldName) thro ...

  8. 如何利用webmin在Linux主机中添加网站

    Linux系统因其高效稳定而受到广大用户的推崇与青睐,然后其管理的复杂性也使很多用户望而却步,动弹不得.为了降低 Linux系统的管理难度,更有效方便的使用该系统,我司所有Linux主机或VPS系统均 ...

  9. Java中如何获取spring中配置的properties文件内容

    有2种方式: 一. 1.通过spring配置properties文件 [java]  <bean id="propertyConfigurer"      class=&qu ...

随机推荐

  1. 使用cygwin出现syntax error near unexpected token'$'do\r

    直接从csdn复制粘贴的.sh代码,放到cygwin下运行sh的时候出错syntax error near unexpected token'$'do\r 解决方法: 1.下载notepad++ 2. ...

  2. quick cocos2dx lua 内存释放

    前言 对于内存的优化,网上有很多例子和教程.总体来说,就那么几种解决方案,在最后我会简单提下,这里先说下在quick中,对于图片的处理. 1.查看内存调试信息 对于quick框架的了解,我们可以参考\ ...

  3. solr初学

    1.我按照网上说的,先去下载了一个版本的额solr.solr-5.4.1 首先有些让我先配饰tomcat,我之前没有接触过solr所以先没去看如何配置,估计也和jdk的配置差不多. 2.下载好后我也想 ...

  4. 结对编程—黄金点游戏WinForm单机版

    本小游戏场景来自邹欣老师的<移山之道>一书: "阿超的课都是下午两点钟,这时班上不少的同学都昏昏欲睡,为了让大家兴奋起来,阿超让同学玩一个叫"黄金点"的游戏: ...

  5. HBase Mac OSX 安装笔记

    本次测试安装的机器为Mac Book Pro, 系统为 OS X 10.9.4.hbase版本0.98.6.1. 使用Java版本为Oracle的JDK 1.6.0_65. 1. 下载安装 hbase ...

  6. JAVA线程同步辅助类CountDownLatch

    一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待. 用给定的计数 初始化 CountDownLatch.由于调用了 countDown() 方法,所以在当前计数到达 ...

  7. C# 调用 Outlook发送邮件实例

    添加引用:Microsoft.Office.Interop.Outlook using System; using System.Collections.Generic; using System.L ...

  8. eclipse 条件断点的使用

    在某些特殊情况下,我们可能需要远程debug服务器进行问题追踪排查.比如在系统日志不够完善,没法定位问题的情况下需要远程debug进行排查. 但是服务器处于并发调用状态,怎样才能不影响其他业务系统调用 ...

  9. FTPS链接服务器

    一.首先登录ftp服务器:命令行 lftp user@ip  上传:put  下载: get 二. 关于FTP传输模式与传输的方式 众所周知,FTP传输有两种工作模式,Active Mode和Pass ...

  10. centos 安装 mongdb

    1.安装MongoDB(安装到/usr/local) wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-amazon-3.2.4.t ...