文档属性升级和降级

上次修改时间: 2010年11月1日

适用范围: SharePoint Foundation 2010

属性升级 是指从文档的属性中提取值,并将这些值写入列表或存储该文档的文档库中的相应列中的过程。属性降级 是同一过程的反向操作。从列表栏中读取值,然后写入文档属性。

Microsoft SharePoint Foundation 可与文档分析程序一起使用,以自动执行升级和降级属性的过程。当文档属性的值发生更改时,这些更改可自动写回列表。当列表项中的列或字段的值发生更改时,这些更改可自动写回与列表项相关联的文档。因此,文档及其关联的列表项仍保持同步。

当发生以下事件时,SharePoint Foundation 会启动属性升级或降级过程:

  • 将文件上载到文档库。

  • 修改与文件相关的列表项的字段。

  • 将以编程方式更新 SPFile 对象的 Properties 属性。

  • 列表架构发生更改后,首次下载文件。

在每种情况下,SharePoint Foundation 均会确定分析程序是否与文件类型相关联。如果关联,SharePoint Foundation 会调用该分析程序,并向其传递文档与属性包对象。然后分析程序会使用需要升级到列表的值填充该属性包,或从属性包中提取需要降级到文档的值。

SharePoint Foundation 只升级或降级与应用于文档的列表栏相匹配的文档属性。应用于文档的列由以下内容指定:

  • 文档的内容类型(如果已指定)。

  • 文档库中的列(如果文档不具有内容类型)。

有关内容类型的详细信息,请参阅内容类型

SharePoint Foundation 还可将整个文档属性集合存储在哈希表中,可通过 SPFile 对象的 Properties 属性以编程方式访问该哈希表。无法通过用户界面访问文档属性哈希表。

有关内置 XML 分析程序如何升级和降级 XML 文件的文档属性的信息,请参阅 XML 文档属性升级和降级

升级

SharePoint Foundation 可创建 IParserPropertyBag 接口 的实例,并使用列表中指定的任意文档属性填充该对象。然后,它会对文件类型调用文档分析程序,并调用该分析程序的 Parse,以便将文档和属性包作为参数传递。该方法返回后,SharePoint Foundation 会访问属性包并确定哪些文档属性匹配哪些列表栏,以将相应值写入列表。

下图演示文档升级过程。在此过程中,分析程序从文档中提取文档属性并将其写入属性包。四个文档属性中的三个属性包含在文档的内容类型中。SharePoint Foundation 会依次将属性包中的各个属性与文档库的列(字段)相匹配,然后将这些属性升级到文档库;即,它会将其属性值写入相应列。由于文档的内容类型不包含"状态"列,因此 SharePoint Foundation 不会升级第四个文档属性(即"状态"),即使该文档库包括匹配的列也是如此。SharePoint Foundation 还会将全部四个文档属性写入表示文档库中文档的 SPFile 对象的 Properties 属性。

使用自定义分析程序的属性升级

降级

SharePoint Foundation 可创建 IParserPropertyBag 接口 的实例,并使用列表中指定的文档属性填充该对象。然后,它会对文档类型调用文档分析程序,并调用该分析程序的 降级,以便将文档和属性包作为参数传递。Demote 方法会访问属性包,将列表栏与文档属性相匹配,并将相应的值写回文档。

下图显示文档属性降级过程。为了更新两个文档属性,SharePoint Foundation 将调用分析程序,并向其传递要更新的文档以及包含两个文档属性的属性包对象。分析程序从属性包中读取属性值并更新文档中的属性。分析程序更新文档后,它会在输出参数中设置一个传递标记,指出它已更改该文档。然后 SharePoint Foundation 会将更新后的文档保存到文档库。

使用自定义分析程序的属性降级

请参阅

概念

自定义文档分析程序

文档分析和内容类型