zoukankan      html  css  js  c++  java
  • SharePoint Pagelibrary XML 修改

    主要逻辑描述:从pagelibrary中下载xml到内存中,更新xml文件的值后再上传到pagelibrary,并且覆盖旧文件,并且签入,发表,审核!
    public void UpdateListOfPopupURL(SPWeb web, Guid ListId)
            {
                string queryString = @"<Where><Eq><FieldRef Name='Title' /><Value Type='Text'>" 
                    + Constants.XML_FILE_NAME + "</Value></Eq></Where>";
    
                string strURLColl = string.Empty;
    
                strURLColl = GetLeavSiteListData(web, ListId);
    
                SPDocumentLibrary list = (SPDocumentLibrary)web.Lists[Constants.PAGE_LIBRARY];
                SPQuery query = new SPQuery();
                query.Query = queryString;
                SPListItemCollection itemColl = list.GetItems(query);
    
                if (itemColl.Count > 0)
                {
                    SPListItem item = itemColl[0];
    
                    SPFile file = item.File;
    
                    if (file.CheckOutStatus == SPFile.SPCheckOutStatus.None)
                    {
                        file.CheckOut();
                        file.Update();
                    }
                    
                    XmlDocument xmlDoc = new XmlDocument();
                    using (Stream fileStream = file.OpenBinaryStream())
                    {
                        xmlDoc.Load(fileStream);             
    
                        XmlNode rootNode = xmlDoc.DocumentElement;
                        XmlNode URLNode = rootNode.SelectSingleNode("URLString");                    
                       
                        URLNode.InnerText = strURLColl;
    
                        using (MemoryStream mStream = new MemoryStream())
                        {
                            xmlDoc.Save(mStream);
    
                            SPFolder folder = list.RootFolder;
                            file = folder.Files.Add(Constants.XML_FILE_NAME + ".xml", mStream, true);
    
                            if (file.CheckOutStatus != SPFile.SPCheckOutStatus.None)
                            {
                                file.CheckIn("Automatically checked in at " + System.DateTime.Now.ToLongTimeString());//签入
                                file.Publish("Automatically published at " + System.DateTime.Now.ToLongTimeString());//发布
    
    
                                if (list.EnableModeration)//判断是否启用内容审批
                                {
                                    file.Approve("Automatically approved at " + System.DateTime.Now.ToLongTimeString());//审核
                                }
                            }
    
                        }
                    }
                }
            }
    

  • 相关阅读:
    Django数据库 相关之select_related/prefetch_related
    Django 序列化
    Django 信号
    Django缓存配置和使用
    Django FBV/CBV、中间件、GIT使用
    学员管理系统(SQLAlchemy 实现)
    Oracle的三种高可用集群方案
    linux系统安装硬盘分区建议
    Linux下expdp自动备份
    impdp导入报错ORA-39070:无法打开日志文件
  • 原文地址:https://www.cnblogs.com/dexter2003/p/2123470.html
Copyright © 2011-2022 走看看