Какой правильный запрос CAML SharePoint для извлечения всех элементов из списка? - PullRequest
1 голос
/ 18 января 2011

По какой-то причине я пытаюсь выполнить запрос к SharePoint 2007 с использованием CAML и веб-сервисов с библиотекой suds Python. Звонок выглядит так:

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.

Как правильно получить все элементы списка?

Ответы [ 3 ]

1 голос
/ 18 января 2011

в этом есть глупость, вы должны обернуть 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 решает, что ваш запрос неверен и не возвращает элементов.

См. Также этот пост: GetListItems Webservice игнорирует мой фильтр запросов

1 голос
/ 18 января 2011

Чтобы получить все элементы, просто поместите туда предложение orderby и укажите произвольный столбец. Должен вернуть все ...

0 голосов
/ 05 марта 2011

Вы используете 0 для параметра rowlimit. Попробуйте что-то вроде 100.

...