Невозможно получить все поля списка с помощью GetListItems в веб-службах sharepoint

Я хочу получить все поля из каждого элемента в списке. Единственный способ, который я нашел, - создать представление, содержащее все поля. Но я не хочу создавать новое представление. Я пытался, но, похоже, это не удостоилось чести. Если бы это сработало, я мог бы получить все поля с помощью GetList и заполнить ViewFields на основе этого.

Есть ли представление для переопределения представления по умолчанию из запроса xml? Мой текущий XML ниже.

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s0="http://schemas.microsoft.com/sharepoint/soap/" soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
  <soap:Body>
    <s0:GetListItems>
      <s0:listName xsi:type="s:string">{GUID}</s0:listName>
      <s0:QueryOptions>
        <s0:ViewAttributes Scope="Recursive"></s0:ViewAttributes>
        <s0:IncludeMandatoryColumns>TRUE</s0:IncludeMandatoryColumns>
      </s0:QueryOptions>
      <s0:Query></s0:Query>
      <s0:ViewFields>
        <s0:FieldRef xsi:type="s:string" Name="ID"></s0:FieldRef>
        <s0:FieldRef xsi:type="s:string" Name="CellPhone"></s0:FieldRef>
        <s0:FieldRef xsi:type="s:string" Name="FirstName"></s0:FieldRef>
      </s0:ViewFields>
    </s0:GetListItems>
  </soap:Body>
</soap:Envelope>

person Eirik Nygaard    schedule 09.03.2009    source источник


Ответы (3)


Я понял. По какой-то причине у вас должен быть тег viewFields в правильном пространстве имен мыла. А внутри него тег ViewFields (регистр важен).

<s0:viewFields>
<ViewFields>
<s0:FieldRef ...>
</ViewFields>
</s0:viewFields>
person Eirik Nygaard    schedule 09.03.2009

Ваши ViewFields должны содержать все поля, которые вы хотите вернуть. Ваш запрос должен вернуть запрос CAML. Запрос CAML определит фильтр и сортировку.

Хорошим инструментом, помогающим как с ViewFields, так и с запросом CAML, является U2U CAML Query Builder. У меня возникли проблемы с поиском ссылки, которая работает для этого в данный момент, поэтому вам, возможно, придется поискать что-то самостоятельно или прибегнуть к чьему-либо инструменту запросов CAML.

Кирк

person Kirk Liemohn    schedule 09.03.2009

"по какой-то причине"? Элемент идентифицируется комбинацией локального имени и пространства имен. С другим пространством имен это другой элемент, даже если он имеет такое же локальное имя.

person John Saunders    schedule 09.03.2009
comment
Я знаю об этом, что меня озадачило, так это то, что мне нужно было иметь два тега с одним и тем же локальным именем (но в другом регистре) друг в друге, один с пространством имен мыла и один без него. - person Eirik Nygaard; 10.03.2009
comment
К вашему сведению, XML чувствителен к регистру. В другом регистре это другое местное имя, следовательно, другое имя. - person John Saunders; 10.03.2009