【问题标题】:What is the correct SharePoint CAML query to retrieve all items from a list?从列表中检索所有项目的正确 SharePoint CAML 查询是什么?
【发布时间】:2011-01-18 18:24:10
【问题描述】:

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

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

由于某种原因,&lt;Query/&gt;&lt;Query&gt;&lt;Where/&gt;&lt;/Query&gt; 得到 0 个结果或错误,但使用简单的重言式 WHERE x = 1 OR x != 1 得到所有项目。

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

【问题讨论】:

    标签: sharepoint caml suds


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      这有点傻,你必须将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 ignores my query filter

      【讨论】:

      • 好建议,但 suds 库为我创建了 &lt;query&gt;(小写)包装器。正常的、非空的&lt;Query&gt;(大写)查询效果很好。我将不得不进入调试器以验证 suds 对于空字符串的 Raw('') 具有相同的行为...
      【解决方案3】:

      您使用 0 作为 rowlimit 参数。试试 100 之类的。

      【讨论】:

      • 我认为 0 表示“无限制”。
      猜你喜欢
      • 1970-01-01
      • 2012-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多