我想从列表中的每个元素中检索字段。我找到的唯一方法是创建一个包含每个字段的视图。但我不想创建新视图。我试过了,但它似乎没有被尊重。如果它工作,我可以使用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>
答案 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)
“出于某种原因”?元素由本地名称和命名空间的组合标识。使用不同的命名空间,它是一个不同的元素,即使它具有相同的本地名称。