如何省略GetListItemChanges响应中的字段(通过请求)

时间:2012-03-12 09:29:59

标签: web-services sharepoint

我有一个连接到SharePoint Web服务的应用程序。 它需要做的是确定哪些项被更改并存储Modified,UniqueId和FileRef字段。要检索此数据,请使用Web服务的“Lists.GetListItemChanges”方法。这给了我正确的数据,但由于数据量很大,所有字段(包括页面内容)都返回给我。

因此,在阅读MSDN上的Lists.GetListItemChanges文档后,我将ViewFields参数与<ViewFields><FieldRef Name="Modified" /><FieldRef Name="UniqueId" /><FieldRef Name="FileRef" /></ViewFields>这样的节点一起使用。 文档说“ViewFields元素,它指定在查询中返回哪些字段以及按什么顺序返回”。

这确实通过在结果行中向前移动这些字段(属性)来更改输出,但所有其他属性也返回到结果中,包括完整内容。这给了我太多的开销,我怎么能省略那些其他领域。

1 个答案:

答案 0 :(得分:0)

有几个字段可以返回。但是,您可以限制非必填字段,如下所示:

    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
        <soap:Body>
            <GetListItemChanges xmlns="http://schemas.microsoft.com/sharepoint/soap/">
                <listName>Team Discussion</listName>
                  <viewFields>
                    <ViewFields>
                      <FieldRef Name="DiscussionTitle"/>
                      <FieldRef Name="Modified"/>
                      <FieldRef Name="MyEditor"/>
                    </ViewFields>
                  </viewFields>
                <since>2012-1-22</since>
            </GetListItemChanges>
        </soap:Body>
    </soap:Envelope>

即便如此,我也无法抑制这些字段:

  • ows_MetaInfo
  • ows__ModerationStatus
  • ows__Level
  • ows_ID
  • ows_UniqueId
  • ows_owshiddenversion
  • ows_FSObjType
  • ows_Created
  • ows_PermMask
  • ows_FileRef

我敢打赌,不可抑制的字段也会根据列表定义而改变。我的例子是讨论清单