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());//审核
                            }
                        }

                    }
                }
            }
        }

posted on 2011-08-01 10:06  张大明  阅读(248)  评论(0)    收藏  举报

导航