SharePoint开发——利用CSOM逐级获取O365中SharePoint网站的List内容
本文介绍如何利用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内容的更多相关文章
- android 利用反射机制获取drawable中所有的图片资源
public List<Map<String,Object>> getGridData() { list=new ArrayList<Map<String,Obje ...
- springboot @Value 获取计算机中绝对路径文件的内容
默认情况下使用 @Value("aaa.txt") private Resource txtResource; 这样获取到的是项目classpath 下的 aaa.txt 如果想获 ...
- 微信公众平台开发—利用OAuth2.0获取微信用户基本信息
在借鉴前两篇获取微信用户基本信息的基础下,本人也总结整理了一些个人笔记:如何通过OAuth2.0获取微信用户信息 1.首先在某微信平台下配置OAuth2.0授权回调页面: 2.通过appid构造url ...
- (一)利用 mdb 调试获取 nvlist_t 中 nvpair_t(name/value) 对
服务器:192.168.2.122 root@2236:~# mdb -k> ::spaADDR STATE NAME ...
- 利用PPPOE认证获取路由器中宽带账号密码
前言 回家时买了一台极路由准备换掉家里老掉牙的阿里路由器,想进后台看一下宽带账号密码,咦???后台密码是什么来着??? 我陷入了沉思,家里的路由器一般都是pppoe拨号,而路由器在与pppoe认证服务 ...
- 利用函数回调获取setInterval中返回的值
我们都知道,定时器里面想返回值如果你用return根本没作用,那么怎么拿到定时器所返回的值呢, 现在只需要利用回调函数,给主函数传一个函数类型的参数callback,然后把想要返回的num再传给cal ...
- java利用反射机制获取list中的某个字段并以list形式返回
public static<T> List<Object> listToList(Collection<T> list,String fieldName) thro ...
- 如何利用webmin在Linux主机中添加网站
Linux系统因其高效稳定而受到广大用户的推崇与青睐,然后其管理的复杂性也使很多用户望而却步,动弹不得.为了降低 Linux系统的管理难度,更有效方便的使用该系统,我司所有Linux主机或VPS系统均 ...
- Java中如何获取spring中配置的properties文件内容
有2种方式: 一. 1.通过spring配置properties文件 [java] <bean id="propertyConfigurer" class=&qu ...
随机推荐
- asp.net 验证正则表达式
基本元字符: . 任意的一个非换行字符 [] 集合匹配,匹配一个[]中出现的字符. 是在多个字符中取一个. () 调整优先级的作用. 还有一个分组的作用 | 或的意思,测试|一下. 注意,或的优先级最 ...
- 数据库的点数据根据行政区shp来进行行政区处理,python定时器实现
# -*- coding: utf-8 -*- import struct import decimal import itertools import arcpy import math impor ...
- [已解决] windows 80端口被占用
看下是不是IIS开着,如果是关掉就OK拉 原文地址:http://www.cnblogs.com/gifisan/p/5822156.html
- WampServer中MySQL中文乱码解决
1.修改mysql的my.ini文件: 在 [client] 下面增加 default-character-set=utf8 在 [mysqld] 下面增加: character_set_server ...
- noi 8787 数的划分
题目链接:http://noi.openjudge.cn/ch0206/8787/ 将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序). 简直跟分苹果一模一样. #include < ...
- [问题2014A01] 解答三(升阶法,由董麒麟同学提供)
[问题2014A01] 解答三(升阶法,由董麒麟同学提供) 引入变量 \(y\),将 \(|A|\) 升阶,考虑如下行列式: \[|B|=\begin{vmatrix} 1 & x_1-a & ...
- BQ24296充电管理芯片使用过程中的注意事项
BQ24296遇到的一点问题 概述:BQ24296是TI出品的具有窄范围VDC控制.基于I2C通讯的最大支持3A充电电流的开关式电源路径管理芯片.可以轻松实现2A以上的大电流充电,能量转换效率达到90 ...
- 离线安装Cloudera Manager 5和CDH5(最新版5.1.3) 完全教程
关于CDH和Cloudera Manager CDH (Cloudera's Distribution, including Apache Hadoop),是Hadoop众多分支中的一种,由Cloud ...
- Linux下内存占用和CPU占用的计算
->使用free命令查看内存使用情况: 1.echo 3 > /proc/sys/vm/drop_caches 2.free 或者使用cat /proc/yourpid/status 来查 ...
- java高薪之路__007_反射
参考地址: 1. http://www.cnblogs.com/rollenholt/archive/2011/09/02/2163758.html2. http://www.cnblogs.com/ ...