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