getLIstItems方法中的CAML查询不返回任何项目行

时间:2012-09-25 18:08:54

标签: web-services soap sharepoint-2010 sharepoint-list

我正在调用Sharepoint的List Web服务并使用getListItems()方法。特别是,我热衷于指定一个CAML查询,因为我真的希望它只检索一个我特别感兴趣的项目。我这样做是通过指定XML字符串中的查询,以不同程度的组合,通过指定EncodedAbsUrl,LinkFileName,URL或FileRef,大多数结果返回0。  XML查询如下所示:

<?xml version="1.0" ?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">    <S:Body><GetListItems xmlns="http://schemas.microsoft.com/sharepoint/soap/"><listName>{5cbc4407-3851-4e00-964a-bb7e9b430f9f}</listName>    <viewName></viewName>    <rowLimit>1000</rowLimit>    <webID></webID>

**<query><Query><Where><Eq><FieldRef Name = "FileRef"/><Value Type = "Text">"/Shared%20Documents/Ashish/Word_feb27.doc"</Value></Eq></Where></Query></query>**

<viewFields><ViewFields><FieldRef Name="FSObjType"/><FieldRef Name="LinkFilename"/><FieldRef Name="UniqueId"/><FieldRef Name="FileRef"/><FieldRef Name="FileRef"/><FieldRef Name="EncodedAbsUrl"/><FieldRef Name="FileSizeDisplay"/><FieldRef Name="_UIVersionString"/><FieldRef Name="_owshiddenversion"/></ViewFields></viewFields></GetListItems>    </S:Body></S:Envelope>

如果没有标签,这个Soap请求就会起作用,并且它会检索List中可用区域的所有项目。当我指定查询标记时,沮丧就开始了。特别是我已尝试过以下组合

FieldRef.name = {LinkFileName,EncodedAbsUrl,URL,FileRef}和Value.type = {Text,URL}

要么产生没有0字段的结果,要么返回内部错误。我认为,这是一个语法问题,而且宁愿向你们提出这个问题,他们过去可能已经知道我可能会把它搞砸了。

由于

2 个答案:

答案 0 :(得分:1)

我建议使用CAML Query Builder和Fiddler。 “查询”构建器可以使用Web服务连接SP,您可以使用该服务构建查询。获得预期结果后,使用Fiddler捕获Web服务请求并使用它:)

BTW:您是否考虑过使用Sharepoint客户端对象模型?您不必担心SOAP消息。

答案 1 :(得分:-1)

删除<query><Query>代码。