XmpPacketWrapper
内容
 [
        
            隐藏
        ]
    XmpPacketWrapper class
包含序列化的 XMP 包,包括头部和尾部。 由一对 XML 处理指令 (PI) 组成的包装器可以放置在 rdf:RDF 元素周围。
public class XmpPacketWrapper : MetadataPackage, IXmpType
构造函数
| 姓名 | 描述 | 
|---|---|
| XmpPacketWrapper() | 初始化一个新的实例XmpPacketWrapper类. | 
| XmpPacketWrapper(XmpHeaderPI, XmpTrailerPI, XmpMeta) | 初始化一个新的实例XmpPacketWrapper类. | 
特性
| 姓名 | 描述 | 
|---|---|
| Count { get; } | 获取元数据属性的数量。 | 
| HeaderPI { get; set; } | 获取或设置表头处理指令。 | 
| Item { get; } | 获取MetadataProperty具有指定名称. | 
| Keys { get; } | 获取元数据属性名称的集合。 | 
| Meta { get; set; } | 获取或设置 XMP meta. | 
| MetadataType { get; } | 获取元数据类型。 | 
| PackageCount { get; } | 获取 XMP 结构内的包数。 | 
| Packages { get; } | 获取数组XmpPackage在 XMP. 里面 | 
| PropertyDescriptors { get; } | 获取描述符集合,其中包含有关可通过 GroupDocs.Metadata 搜索引擎访问的属性的信息。 | 
| Schemes { get; } | 提供对已知 XMP 模式的访问。 | 
| TrailerPI { get; set; } | 获取或设置尾部处理指令。 | 
方法
| 姓名 | 描述 | 
|---|---|
| AddPackage(XmpPackage) | 添加包。 | 
| AddProperties(Func<MetadataProperty, bool>, PropertyValue) | 添加满足指定谓词的已知元数据属性。 该操作是递归的,因此它也会影响所有嵌套包。 | 
| ClearPackages() | 删除所有XmpPackage在 XMP. 里面 | 
| Contains(string) | 确定包是否包含具有指定名称的元数据属性。 | 
| ContainsPackage(string) | 确定包是否存在于 XMP 包装器中。 | 
| virtual FindProperties(Func<MetadataProperty, bool>) | 查找满足指定谓词的元数据属性。 搜索是递归的,因此它也会影响所有嵌套包。 | 
| GetEnumerator() | 返回一个遍历集合的枚举器。 | 
| GetPackage(string) | 通过命名空间 uri 获取包。 | 
| GetXmpRepresentation() | 以 XMP 格式返回包含字符串的值。 | 
| RemovePackage(XmpPackage) | 删除指定的包。 | 
| virtual RemoveProperties(Func<MetadataProperty, bool>) | 删除满足指定谓词的元数据属性。 | 
| virtual Sanitize() | 从包中删除可写元数据属性。 该操作是递归的,因此它也会影响所有嵌套包。 | 
| SetProperties(Func<MetadataProperty, bool>, PropertyValue) | 设置满足指定谓词的已知元数据属性。 该操作是递归的,因此它也会影响所有嵌套包。 此方法是以下方法的组合AddProperties和UpdateProperties 如果现有属性满足谓词,则更新其值。 如果包中缺少满足谓词的已知属性,则将其添加到包中。 | 
| UpdateProperties(Func<MetadataProperty, bool>, PropertyValue) | 更新满足指定谓词的已知元数据属性。 该操作是递归的,因此它也会影响所有嵌套包。 | 
评论
了解更多
例子
此示例说明如何更新 XMP 元数据属性。
using (Metadata metadata = new Metadata(Constants.GifWithXmp))
{
    IXmp root = metadata.GetRootPackage() as IXmp;
    if (root != null && root.XmpPackage != null)
    {
        // 如果 XMP 包中没有这样的方案,我们应该创建它
        if (root.XmpPackage.Schemes.DublinCore == null)
        {
            root.XmpPackage.Schemes.DublinCore = new XmpDublinCorePackage();
        }
        root.XmpPackage.Schemes.DublinCore.Format = "image/gif";
        root.XmpPackage.Schemes.DublinCore.SetRights("Copyright (C) 2011-2022 GroupDocs. All Rights Reserved");
        root.XmpPackage.Schemes.DublinCore.SetSubject("test");
        if (root.XmpPackage.Schemes.CameraRaw == null)
        {
            root.XmpPackage.Schemes.CameraRaw = new XmpCameraRawPackage();
        }
        root.XmpPackage.Schemes.CameraRaw.Shadows = 50;
        root.XmpPackage.Schemes.CameraRaw.AutoBrightness = true;
        root.XmpPackage.Schemes.CameraRaw.AutoExposure = true;
        root.XmpPackage.Schemes.CameraRaw.CameraProfile = "test";
        root.XmpPackage.Schemes.CameraRaw.Exposure = 0.0001;
        // 如果你不想保留旧值,只需替换整个方案
        root.XmpPackage.Schemes.XmpBasic = new XmpBasicPackage();
        root.XmpPackage.Schemes.XmpBasic.CreateDate = DateTime.Today;
        root.XmpPackage.Schemes.XmpBasic.BaseUrl = "https://groupdocs.com";
        root.XmpPackage.Schemes.XmpBasic.Rating = 5;
        root.XmpPackage.Schemes.BasicJobTicket = new XmpBasicJobTicketPackage();
        // 设置复杂类型属性
        root.XmpPackage.Schemes.BasicJobTicket.Jobs = new[]
        {
            new XmpJob
            {
                ID = "1",
                Name = "test job",
                Url = "https://groupdocs.com"
            },
        };
        // ... 
        metadata.Save(Constants.OutputGif);
    }
}
也可以看看
- class MetadataPackage
 - interface IXmpType
 - 命名空间 GroupDocs.Metadata.Standards.Xmp
 - 部件 GroupDocs.Metadata