我正在调用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字段的结果,要么返回内部错误。我认为,这是一个语法问题,而且宁愿向你们提出这个问题,他们过去可能已经知道我可能会把它搞砸了。
由于
答案 0 :(得分:1)
我建议使用CAML Query Builder和Fiddler。 “查询”构建器可以使用Web服务连接SP,您可以使用该服务构建查询。获得预期结果后,使用Fiddler捕获Web服务请求并使用它:)
BTW:您是否考虑过使用Sharepoint客户端对象模型?您不必担心SOAP消息。答案 1 :(得分:-1)
删除<query><Query>
代码。