1

出于某种原因,我尝试使用 CAML 和 Web 服务以及 Python suds 库来查询 SharePoint 2007。调用看起来像:

listItems = client.service.GetListItems(
    listName, '', Raw('<Query />'), viewFields, 0, 
    Raw("""<QueryOptions>
       <IncludeMandatoryColumns>TRUE</IncludeMandatoryColumns>
       </QueryOptions>"""), 
    None)

出于某种原因,我得到了 0 个结果或一个错误,<Query/>或者<Query><Where/></Query>但得到了一个简单的重言式的所有项目WHERE x = 1 OR x != 1

获取所有列表项的正确方法是什么?

4

3 回答 3

1

要获取所有项目,只需在其中放置一个 orderby 子句,并指定一个任意列。应该归还一切...

于 2011-01-18T20:27:00.047 回答
1

关于它有一个愚蠢的事情,你必须将你的元素包装Query在一个query元素中。生成的 SOAP 信封看起来像

<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'>
 <soapenv:Body>
  <GetListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'>
     <listName>TestQuery</listName>
     <query><Query><Where><Eq><FieldRef Name='Title'/>
      <Value Type='Text'>One</Value></Eq></Where></Query>
     </query>
     <viewFields><ViewFields><FieldRefName='Title'/>
  </ViewFields></viewFields><RowLimit>1</RowLimit>
 </GetListItems></soapenv:Body></soapenv:Envelope>

因此,GetListItems Web 服务确定您的查询是错误的并且不返回任何项目。

另请参阅这篇文章:GetListItems Webservice 忽略我的查询过滤器

于 2011-01-18T20:30:15.857 回答
0

您将 0 用于 rowlimit 参数。试试 100 之类的。

于 2011-03-05T08:48:34.250 回答