主要逻辑描述:从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());//审核 } } } } } }