1

我正在调用 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 请求实际上可以工作,它会检索列表中可用的所有项目。当我指定查询标签时,挫折感就开始了。特别是我尝试了以下组合

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

它们要么产生没有 0 字段的结果,要么返回内部错误。我想,这是一个句法问题,我宁愿把这个问题发给过去可能不知道的人,看看我可能在哪里搞砸了。

谢谢

4

2 回答 2

1

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

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

于 2012-10-11T13:15:43.840 回答
-1

删除<query><Query>标签。

于 2012-09-26T06:09:03.173 回答