2010-08-09 56 views
2

我試圖從Sharepoint服務器(通過python/suds)拉列表項目,並且對GetListItems進行查詢有一些困難。如果我除了列表Name之外不向GetListItems提供其他參數,它將返回該列表的默認視圖中的所有項目。我想查詢要返回的特定項目集(ID = 15)以及要爲這些項目返回的特定字段集合(日期和說明)。這裏是我的SOAP包:Python SOAP到MS Web服務(SharePoint)(GetListItems)

<?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/> 
<ns0:Body> 
    <ns1:GetListItems> 
    <ns1:listName>MyCalendar</ns1:listName> 
    <query> 
     <Where> 
      <Eq> 
       <FieldRef Name="_ows_ID">15</FieldRef> 
      </Eq> 
     </Where> 
    </query> 
    <viewFields> 
     <FieldRef Name="Description"/> 
     <FieldRef Name="EventDate"/> 
    </viewFields> 
    </ns1:GetListItems> 
</ns0:Body> 
</SOAP-ENV:Envelope> 

這似乎符合WSDL,然而,使得查詢時,我回來了所有字段的項目的完整列表(如果我沒有通過任何查詢XML在所有)。

SOAP noob的任何建議?

而且,這裏是產生這個XML我的Python代碼:

query = Element('query') 
where = Element('Where') 
eq = Element('Eq') 
eq.append(Element('FieldRef').append(Attribute('Name', '_ows_ID')).setText('15')) 
where.append(eq) 
query.append(where) 

viewFields = Element('viewFields') 
viewFields.append(Element('FieldRef').append(Attribute('Name','Description'))) 
viewFields.append(Element('FieldRef').append(Attribute('Name','EventDate'))) 

results = c_lists.service.GetListItems('MyCalendar', None, query, viewFields, None, None) 

任何幫助將不勝感激!

回答

2

我想出了這一個。問題是CAML查詢。

。您需要將CAML的「查詢」包裝到「查詢」元素中。

。您需要設置適當的「值類型」元素和屬性。

查看我的其他帖子標題爲'Sharepoint Filter for List Items(GetListItems)'以獲取更多信息和代碼。

謝謝! 尼克

+0

下面是其他職位與代碼的鏈接。 http://stackoverflow.com/questions/3449039/sharepoint-filter-for-list-itemsgetlistitems – user1209675 2016-06-03 17:40:04