繁体   English   中英

如何将XML文件下载到XML文件的早期版本

[英]How to Download to XML files Previous Versions of Infopath form SharePoint

当我访问Infopath文件列表时,例如选择一个文件并单击“版本历史记录”,是否可以下载以前的版本而不还原旧版本?

这仅适用于库中的项目(不适用于列表)。 需要记住的几点:

  • 库具有称为文件的属性
  • 文件具有称为版本的属性
  • 版本具有称为Url的属性

考虑到这三个因素,您可以通过执行以下操作来获取InfoPath文件的所有版本历史记录的下载URL:

public static void Main(string[] args)
    {
        ClientContext context = new ClientContext(<sharepoint site here>);
        Web site = context.Web;
        List docLib = site.Lists.GetByTitle(<doc lib here>);
        context.Load(docLib);

        CamlQuery caml = new CamlQuery();
        ListItemCollection items = docLib.GetItems(caml);

        context.Load(items);
        context.ExecuteQuery();

        Console.WriteLine("Pulling information...");

        foreach(ListItem item in items)
        {
            //You can change title to any internal field name that you want to use as basis
            if (item.FieldValues["Title"] != null)
            {
                Console.WriteLine("File Name: " + item.FieldValues["Title"]);
                context.Load(item);
                //this gets ALL the version of the file
                FileVersionCollection versions = item.File.Versions;

                context.Load(versions);
                context.ExecuteQuery();

                if (versions != null)
                {
                    foreach (FileVersion version in versions)
                    {
                        User usr = version.CreatedBy as User;
                        context.Load(usr);
                        context.ExecuteQuery();

                        //will be explained in detail
                        int ver = GetVersion(version.VersionLabel);
                        //will be explained in detail
                        int verLink = ver * 512;
                        string link = "your sharepoint site";
                        //Console.WriteLine("Version Info:: {0}, {1}, {2}, {3}", version.VersionLabel, version.Created, usr.LoginName, version.CheckInComment);
                        Console.WriteLine("Document Link: " + link + version.Url);
                        Console.WriteLine("Version: " + ver.ToString());
                        Console.WriteLine("Created: " + version.Created);
                        Console.WriteLine("Created By: " + usr.LoginName);
                        Console.WriteLine("Comments: " + version.CheckInComment);
                    }
                }
            }
        }

        Console.WriteLine("Pulling information complete.");
        Console.Read();
    }

注意,我使用了一个名为GetVersion的方法? 这是一个简单的方法,仅获取文档的主要版本号。 看起来像这样:

public static int GetVersion(string itemVersion)
    {
        int index = itemVersion.IndexOf('.');
        return int.Parse(itemVersion.Substring(0, index));
    }

如果您需要次要版本,则可以创建另一个方法来提取该信息。 此方法的用途是生成每个文档版本所需的下载链接。 至于为什么需要将版本乘以512的详细信息,可以在此处阅读。

希望这可以帮助。 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM