Sharepoint / SOAP - 忽略查询的GetListItems

时间:2011-02-16 11:05:16

标签: python sharepoint soap

尝试通过SOAP从Python到Sharepoint谈谈。

我尝试查询的其中一个列表包含“ID”作为主键字段。

(Field){
   _RowOrdinal = "0"
   _FromBaseType = "TRUE"
   _DisplayName = "ID"
   _Name = "ID"
   _SourceID = "http://schemas.microsoft.com/sharepoint/v3"
   _ColName = "tp_ID"
   _StaticName = "ID"
   _PrimaryKey = "TRUE"
   _ReadOnly = "TRUE"
   _Type = "Counter"
   _ID = "{1d22ea11-1e32-424e-89ab-9fedbadb6ce1}"
},

我们发送以下请求以查询ID = 77

的列表项
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:ns0="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://schemas.microsoft.com/sharepoint/soap/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Header/>
   <SOAP-ENV:Body>
      <ns1:GetListItems>
         <ns1:listName>60e3f442-6faa-4b49-814d-2ce2ec88b8d5</ns1:listName>
         <query><Query><Where>
            <Eq>
               <FieldRef Name="ID"/>
               <Value Type="Counter">77</Value>
            </Eq>
         </Where></Query></query>
       </ns1:GetListItems>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

然而,Sharepoint会从列表中返回完全忽略查询的所有项目。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

实际证明有必要使用

<ns1:query> 

这里(无论出于何种原因)。

答案 1 :(得分:0)

尝试Type =“Number”而不是Counter。我刚刚浏览了一堆代码,我写了一段时间后根据ID获取列表项,我使用了Number,它可以工作。

您可能还需要包含视图和内容的空元素。以下是我生成的请求的片段:

 <GetListItems xmlns="http://schemas.microsoft.com/sharepoint/soap/">
  <listName>Workgroups</listName>
  <viewName />
  <query><Query>
   <Where><Eq><FieldRef Name="ID"/><Value Type="Number">101</Value></Eq></Where>
  </Query></query>
  <viewFields><ViewFields><FieldRef Name="Title"/><FieldRef Name="Leader" /><FieldRef Name="Members" /><FieldRef Name="hiddenmembers" /></ViewFields></viewFields>
  <rowLimit />
  <queryOptions><QueryOptions /></queryOptions>
 </GetListItems>