我正在调用 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 字段的结果,要么返回内部错误。我想,这是一个句法问题,我宁愿把这个问题发给过去可能不知道的人,看看我可能在哪里搞砸了。
谢谢