无法在sharepoint Web服务中使用GetListItem获取列表的所有字段

时间:2009-03-09 12:18:21

标签: web-services sharepoint field

我想从列表中的每个元素中检索字段。我找到的唯一方法是创建一个包含每个字段的视图。但我不想创建新视图。我试过了,但它似乎没有被尊重。如果它工作,我可以使用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>

3 个答案:

答案 0 :(得分:4)

我明白了。出于某种原因,您必须在正确的soap命名空间中具有viewFields标记。其中包含一个ViewFields标签(案例很重要)。

<s0:viewFields>
<ViewFields>
<s0:FieldRef ...>
</ViewFields>
</s0:viewFields>

答案 1 :(得分:1)

您的ViewFields应包含您要返回的所有字段。您的查询应返回CAML查询。 CAML查询将确定过滤器和排序。

帮助ViewFields和CAML查询的一个好工具是U2U CAML查询生成器。我现在无法找到适用于此的链接,因此您可能需要自己搜索或使用其他人的CAML查询工具。

柯克

答案 2 :(得分:1)

“出于某种原因”?元素由本地名称​​和命名空间的组合标识。使用不同的命名空间,它是一个不同的元素,即使它具有相同的本地名称。