2011-02-16 102 views
-1

尝试通过SOAP将Python与Sharepoint交谈。Sharepoint/SOAP - GetListItems忽略查询

我试图查询的其中一个列表包含'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

的实际结果是,有必要在这里使用

<ns1:query> 

(无论何种原因)。

0

Try 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> 
+0

也不会影响以下代码:http://pastie.org/1570201 – 2011-02-16 12:00:17

+0

如果您使用类似U2U CAML查询生成器(http://www.u2u.net/Tools/wincamlquerybuilder)会发生什么情况/CamlQueryBuilder.aspx)执行相同的查询? – 2011-02-16 12:21:49