入门者必看!SharePoint之CAML总结(实战)
分享人:广州华软 无名
一. 前言
在SharePoint中,不支持直接操作数据库,但开发过程中,避免不了查询数据,那么,在SharePoint中如何查询数据?
当然是使用CAML语法。
二. 目录
1. 什么是CAML
2. 如何使用CAML查询数据
3.1 如何通过知识分享模板创建分享文章
3.2 筛选条件
3.3 逻辑运算
3.4排序条件
3.5返回字段
3.6查询范围
3.7字段类型
3.8完整例子
4.总结
三. 什么是CAML
协作应用程序标记语言 (CAML) 是一种基于 XML 的语言。
在SharePoint使用此语言描述对列表的查询,同时也描述字段类型定义、站点模板定义等。
在SharePoint开发中,基本都包含数据查询,根据某些筛选、排序条件,查询某个列表条目的集合。
四. 如何使用CAML查询数据
4.1 筛选条件
操作符 |
备注 |
Eq |
等于 |
Neq |
不等于 |
Lt |
小于 |
Leq |
小于等于 |
Gt |
大于 |
Geq |
大于等于 |
Contains |
包含 |
BeginsWith |
以某字符串开头 |
In |
在集合范围内 |
IsNull |
为空, |
IsNotNull |
不为空 |
Membership |
属于用户组 |
User |
用户 |
Boolean |
是否,值(1是,0否) |
_ModerationStatus |
批准,0已批准,1已拒绝,2待定 |
4.2 逻辑运算
在CAML中也支持多个查询条件的逻辑组合,支持“与”和“或”,但是不支持“非”。通过<And></And>和<Or></Or>标签进行逻辑运算。
不过需要特别声明的是,And标签和Or标签内部,只能使用两个查询条件。
And标签和Or标签内部,只能使用两个查询条件,需要3个条件,则需要改成And嵌套And
<And>
<And>
<Eq><FieldRef Name=”Title”><Value Type=”Text”>Value</Value></Eq>
<Eq><FieldRef Name=”Name”><Value Type=”Text”>Value</Value></Eq>
</And>
<Eq><FieldRef Name=”School”><Value Type=”Text”>Value</Value></Eq>
</And>
4.3 排序条件
使用<OrderBy></OrderBy>指定排序条件。
查询条件中每个字段按照排列的顺序依次为首要查询条件、次要查询条件:
<FieldRef Name='字段名' Ascending='TRUE|FALSE' />
其中的Name属性同样必须使用内部名称,Ascending指定升序或者降序,则默认升序。
<OrderBy>
<FieldRef Name='Title'/>
<FieldRef Name='ID' Ascending='FALSE' />
</OrderBy>
4.4 返回字段
考虑到查询性能,需要指定返回字段,不指定则返回所有字段。指定返回字段的方式使用<FieldRef Name='字段名' />的形式。
例如,如果需要返回标题、ID字段,则写法为:
<FieldRef Name='Title' />
<FieldRef Name='ID' />
4.5 查询范围
ViewAttributes = "Scope='FilesOnly'"
Scope='Default' : 只查询指定文件夾下的项目及子文件夾
Scope='FilesOnly' : 只查询指定文件夾下的项目
Scope='Recursive' : 查询所有项目,不查询文件夾
Scope='RecursiveAll' : 查询所有项目和所有子文件夾
4.6 字段类型
使用CAML语法查询列表数据,需要指定字段类型,不同的字段类型,CAML语法也不一样。下面列出常用的字段类型以及常用的常用类型的查询方式。
成员名称 |
说明 |
Integer |
正整数或负整数值。 |
Text |
单行文本。 |
DateTime |
日期和时间值。 |
Counter |
内部 ID 字段的整数 |
Choice |
选项值。 |
Lookup |
其他列表中的值对的引用。 |
Boolean |
数据库中存储为1或0的布尔值。。 |
Number |
浮点数。 |
Currency |
在特定区域设置基于货币值的格式。 |
URL |
超链接。 |
Calculated |
计算的值。 |
User |
SharePoint 网站的用户。 |
ModStat |
内容审批状态。 |
4.6.1 Integer
<Eq><FieldRef Name='Age'/><Value Type='Text'>12</Value></Eq>
4.6.2 Text
<Eq><FieldRef Name='Title'/><Value Type='Text'>测试</Value></Eq>
4.6.3 Boolean
True
<Eq><FieldRef Name='IsEnd' /><Value Type='Boolean'>1</Value></Eq>
False
<Eq><FieldRef Name='IsEnd /><Value Type='Boolean'>0</Value></Eq>
4.6.4 Url
例如:http://sp/managedpath/spwebOrSitecollectionname,需要用相对地址
<Where>
<BeginsWith>
<FieldRef Name='URL'/>
<Value Type='URL'>/managedpath/spwebOrSitecollectionname</Value>
</BeginsWith>
</Where>
4.6.5 Calculated
这里的Type取值为SPFieldCalculated.OutputType
<Eq>
<FieldRef Name='FullName' />
<Value Type='Text'>Rafael</Value>
</Eq>
4.6.6 Counter
<Eq><FieldRef Name='ID' /><Value Type='Counter'>66</Value></Eq>
4.6.7 User
根据用户ID查询
<Eq><FieldRef Name='Author' LookupId='True' /><Value Type='Lookup' >31</Value></Eq>"
4.6.8 Folder
如果是文件,则FSObjType的值为0
<Eq>
<FieldRef Name='FSObjType' />
<Value Type='Number'>1</Value>
</Eq>
4.6.9 Date
默认情况下,对于时间和日期类型的查询只精确到日期,如果需要精确到时间:
<Gt> <FieldRef Name='DateTimeField' /> <Value Type='DateTime' IncludeTimeValue='TRUE'> 2009-10-08T17:48:37Z </Value> </Gt>
(其中的日期格式可以通过使用一个静态方法SPUtility.CreateISO8601DateTimeFromSystemDateTime转换得到)
4.6.10 Lookup
如果查询的字段类别是lookup,指定值的时候可以指定具体值也可以指定ID,如果需要指定ID,需要在FieldRef元素里指定LookupId为true
<Eq>
<FieldRef Name='CFRefTitle />
<Value Type='Lookup'>测试</Value>
</Eq>
或者
<Eq><FieldRef Name='Country' LookupId='True' /><Value Type='Lookup'>11</Value></Eq>
4.6.11 IsNull
<IsNull> <FieldRef Name="Status" /></IsNull>
4.6.12 IsNotNull
< IsNotNull> <FieldRef Name="Status" /></ IsNotNull>
4.6.13 ModStat
<Eq><FieldRef Name='_ModerationStatus'/><Value Type='ModStat'>0</Value></Eq>
4.7 完整例子
查询标题为**的数据。
五. 总结
本文主要介绍了如何使用CAML查询数据,只有掌握它,才能更好地进行SharePoint开发。
在编写CAML字符串的时候,需要特别注意Xml标签的大小写是敏感的。
CAML语法,以Xml的形式进行标准化,便于计算机的解析和阅读,相比SQL而言,也更加安全,不用担心SQL注入。
要说CAML的地位就相当于SQL在网站中的地位一样,使你不得不去熟悉它。
觉得本文有用的,可以点一下关注哦!
入门者必看!SharePoint之CAML总结(实战)的更多相关文章
- Springboot 完整搭建快速入门,必看!
前言 手把手教你Springboot微服务项目搭建快速入门,通过本文学习Springboot的搭建快速入门,掌握微服务大致的配置服务,后续将会继续将核心组件引入到项目中,欢迎关注,点赞,转发. Spr ...
- php代码审计入门前必看
首先先介绍什么是代码审计? 代码审计:是指针对源代码进行检查,寻找代码中的bug,这是一项需要多方面技能的技术 包括:对编程的掌握,漏洞形成原理的理解,系统和中间件等的熟悉 2.为什么要进行代码审计, ...
- Python 的映射数据类型有哪些?零基础小白入门学习必看
1 映射类关系 Python 的 collections.abc 模块内拥有 Mapping 和 MutableMapping 这两个抽象基类,它们为 dict 和其他类似的类型提供了接口定义. mu ...
- 想入职阿里的Java开发者必看,阿里巴巴面试官实战经验分享!
最近社区Java技术进阶群的小伙伴总是会问,如何面试阿里Java技术岗,需要什么条件,做哪些准备:小编就这些问题找到了阿里技术团队中在一线真正带Java开发团队并直接参与技术面试的专家,分享了自身在筛 ...
- Java编程学习知识点分享 入门必看
Java编程学习知识点分享 入门必看 阿尔法颜色组成(alpha color component):颜色组成用来描述颜色的透明度或不透明度.阿尔法组成越高,颜色越不透明. API:应用编程接口.针对软 ...
- Liunx新手入门必看
安装CentOS(Linux的一个常用发行版本,互联网公司经常使用这个发行版)用到的软件: VMware_workstation_full_12.5.2.exe 虚拟机软件,虚拟机由这个软件安装.管理 ...
- 学习ios(必看经典)牛人40天精通iOS开发的学习方法
学习ios(必看经典)牛人40天精通iOS开发的学习方法 描述 这是一套从一个对iOS开发感兴趣的学员到iOS开发高手的系统.专业的课程体系.以培养企业开发真正需要的人才为目标,每个知识点都用案例来讲 ...
- Linux网络编程必看书籍推荐
首先要说讲述计算机网络和TCP/IP的书很多. 先要学习网络知识才谈得上编程 讲述计算机网络的最经典的当属Andrew S.Tanenbaum的<计算机网络>第五版,这本书难易适中. &l ...
- iOS开发 iOS10推送必看
iOS10更新之后,推送也是做了一些小小的修改,下面我就给大家仔细说说.希望看完我的这篇文章,对大家有所帮助. 一.简单入门篇---看完就可以简单适配完了 相对简单的推送证书以及环境的问题,我就不在这 ...
随机推荐
- 一文读懂 Spring Boot、微服务架构和大数据治理三者之间的故事
微服务架构 微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物.互联网时代的产品通常有两类特点:需求变化快和用户群体庞大,在这种情况 ...
- 转 Web用户的身份验证及WebApi权限验证流程的设计和实现
前言:Web 用户的身份验证,及页面操作权限验证是B/S系统的基础功能,一个功能复杂的业务应用系统,通过角色授权来控制用户访问,本文通过Form认证,Mvc的Controller基类及Action的权 ...
- 语音识别中的CTC算法的基本原理解释
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文作者:罗冬日 目前主流的语音识别都大致分为特征提取,声学模型,语音模型几个部分.目前结合神经网络的端到端的声学模型训练方法主要CTC和基 ...
- 基于java的ES开发
3.1 环境配置 Jdk 1.8及以上 Elasticsearch.client 5.5.2(与服务器版本一致) Log4j 2.7及以下 maven工程必要的jar包依赖 <project x ...
- java 字符常量池
一.题目: 问题:String str = new String(“hello”),“hello”在内存中是怎么分配的? 答案是:堆,字符串常量区. Java中的字符串常量池和JVM运行时数据区 ...
- 初识函数库libpcap
由于工作上的需要,最近简单学习了抓包函数库libpcap,顺便记下笔记,方便以后查看 一.libpcap简介 libpcap(Packet Capture Library),即数据包捕获函数库, ...
- springcloud禁用动注册正在运行的服务
@EnableDiscoveryClient(autoRegister=false)或者在配置文件里spring.cloud.service-registry.auto-registration.en ...
- eclipse换了高版本的maven插件后报错:org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.maven.project
在给eclipse换了高版本的maven插件后,引入jar包报如下的错误: org.apache.maven.archiver.MavenArchiver.getManifest(org.apach ...
- Kali Linux远程连接Windows服务器
前言: 为了在Kali上远程连接Windows系统的服务器我们需要安装两个工具,rdesktop和tsclient.另外,我们从主机服务商那里购买的Windows操作系统的服务器都是默认开启了远程连接 ...
- web安全-XSS攻击及防御
XSS攻击的原理 xss表示Cross Site Scripting(跨站脚本攻击),它与SQL注入攻击类似,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/修改/删除数据的目的,而在xss攻 ...