📄 xmlblogprovider.cs
字号:
Directory.CreateDirectory(_Folder + "pages");
string fileName = _Folder + "pages" + Path.DirectorySeparatorChar + page.Id.ToString() + ".xml";
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using (XmlWriter writer = XmlWriter.Create(fileName, settings))
{
writer.WriteStartDocument(true);
writer.WriteStartElement("page");
writer.WriteElementString("title", page.Title);
writer.WriteElementString("description", page.Description);
writer.WriteElementString("content", page.Content);
writer.WriteElementString("keywords", page.Keywords);
writer.WriteElementString("parent", page.Parent.ToString());
writer.WriteElementString("isfrontpage", page.IsFrontPage.ToString());
writer.WriteElementString("showinlist", page.ShowInList.ToString());
writer.WriteElementString("ispublished", page.IsPublished.ToString());
writer.WriteElementString("datecreated", page.DateCreated.AddHours(-BlogSettings.Instance.Timezone).ToString("yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture));
writer.WriteElementString("datemodified", page.DateModified.AddHours(-BlogSettings.Instance.Timezone).ToString("yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture));
writer.WriteEndElement();
}
}
/// <summary>
/// Updates a Page.
/// </summary>
public override void UpdatePage(Page page)
{
InsertPage(page);
}
/// <summary>
/// Deletes a page from the data store.
/// </summary>
public override void DeletePage(Page page)
{
string fileName = _Folder + "pages" + Path.DirectorySeparatorChar + page.Id.ToString() + ".xml";
if (File.Exists(fileName))
File.Delete(fileName);
if (Page.Pages.Contains(page))
Page.Pages.Remove(page);
}
/// <summary>
/// Retrieves all pages from the data store
/// </summary>
/// <returns>List of Pages</returns>
public override List<Page> FillPages()
{
string folder = Category._Folder + "pages" + Path.DirectorySeparatorChar;
List<Page> pages = new List<Page>();
foreach (string file in Directory.GetFiles(folder, "*.xml", SearchOption.TopDirectoryOnly))
{
FileInfo info = new FileInfo(file);
string id = info.Name.Replace(".xml", string.Empty);
Page page = Page.Load(new Guid(id));
pages.Add(page);
}
return pages;
}
#endregion
#region Categories
/// <summary>
/// Gets a Category based on a Guid
/// </summary>
/// <param name="id">The category's Guid.</param>
/// <returns>A matching Category</returns>
public override Category SelectCategory(Guid id)
{
List<Category> categories = Category.Categories;
Category category = new Category();
foreach (Category cat in categories)
{
if (cat.Id == id)
category = cat;
}
category.MarkOld();
return category;
}
/// <summary>
/// Inserts a Category
/// </summary>
/// <param name="category">Must be a valid Category object.</param>
public override void InsertCategory(Category category)
{
List<Category> categories = Category.Categories;
categories.Add(category);
string fileName = _Folder + "categories.xml";
using (XmlTextWriter writer = new XmlTextWriter(fileName, System.Text.Encoding.UTF8))
{
writer.Formatting = Formatting.Indented;
writer.Indentation = 4;
writer.WriteStartDocument(true);
writer.WriteStartElement("categories");
foreach (Category cat in categories)
{
writer.WriteStartElement("category");
writer.WriteAttributeString("id", cat.Id.ToString());
writer.WriteAttributeString("description", cat.Description);
writer.WriteValue(cat.Title);
writer.WriteEndElement();
cat.MarkOld();
}
writer.WriteEndElement();
}
}
/// <summary>
/// Updates a Category
/// </summary>
/// <param name="category">Must be a valid Category object.</param>
public override void UpdateCategory(Category category)
{
List<Category> categories = Category.Categories;
categories.Remove(category);
categories.Add(category);
string fileName = _Folder + "categories.xml";
using (XmlTextWriter writer = new XmlTextWriter(fileName, System.Text.Encoding.UTF8))
{
writer.Formatting = Formatting.Indented;
writer.Indentation = 4;
writer.WriteStartDocument(true);
writer.WriteStartElement("categories");
foreach (Category cat in categories)
{
writer.WriteStartElement("category");
writer.WriteAttributeString("id", cat.Id.ToString());
writer.WriteAttributeString("description", cat.Description);
writer.WriteValue(cat.Title);
writer.WriteEndElement();
cat.MarkOld();
}
writer.WriteEndElement();
}
}
/// <summary>
/// Deletes a Category
/// </summary>
/// <param name="category">Must be a valid Category object.</param>
public override void DeleteCategory(Category category)
{
List<Category> categories = Category.Categories;
categories.Remove(category);
string fileName = _Folder + "categories.xml";
if (File.Exists(fileName))
File.Delete(fileName);
if (Category.Categories.Contains(category))
Category.Categories.Remove(category);
using (XmlTextWriter writer = new XmlTextWriter(fileName, System.Text.Encoding.UTF8))
{
writer.Formatting = Formatting.Indented;
writer.Indentation = 4;
writer.WriteStartDocument(true);
writer.WriteStartElement("categories");
foreach (Category cat in categories)
{
writer.WriteStartElement("category");
writer.WriteAttributeString("id", cat.Id.ToString());
writer.WriteAttributeString("description", cat.Description);
writer.WriteValue(cat.Title);
writer.WriteEndElement();
cat.MarkOld();
}
writer.WriteEndElement();
}
}
/// <summary>
/// Fills an unsorted list of categories.
/// </summary>
/// <returns>A List<Category> of all Categories.</returns>
public override List<Category> FillCategories()
{
string fileName = _Folder + "categories.xml";
if (!File.Exists(fileName))
return null;
XmlDocument doc = new XmlDocument();
doc.Load(fileName);
List<Category> categories = new List<Category>();
foreach (XmlNode node in doc.SelectNodes("categories/category"))
{
Category category = new Category();
category.Id = new Guid(node.Attributes["id"].InnerText);
category.Title = node.InnerText;
if (node.Attributes["description"] != null)
category.Description = node.Attributes["description"].InnerText;
categories.Add(category);
category.MarkOld();
}
return categories;
}
#endregion
#region Settings
/// <summary>
/// Loads the settings from the provider.
/// </summary>
public override StringDictionary LoadSettings()
{
string filename = System.Web.HttpContext.Current.Server.MapPath(Utils.RelativeWebRoot + "App_Data/settings.xml");
StringDictionary dic = new StringDictionary();
XmlDocument doc = new XmlDocument();
doc.Load(filename);
foreach (XmlNode settingsNode in doc.SelectSingleNode("settings").ChildNodes)
{
string name = settingsNode.Name;
string value = settingsNode.InnerText;
dic.Add(name, value);
}
return dic;
}
/// <summary>
/// Saves the settings to the provider.
/// </summary>
public override void SaveSettings(StringDictionary settings)
{
if (settings == null)
throw new ArgumentNullException("settings");
string filename = _Folder + "settings.xml";
XmlWriterSettings writerSettings = new XmlWriterSettings(); ;
writerSettings.Indent = true;
//------------------------------------------------------------
// Create XML writer against file path
//------------------------------------------------------------
using (XmlWriter writer = XmlWriter.Create(filename, writerSettings))
{
writer.WriteStartElement("settings");
foreach (string key in settings.Keys)
{
writer.WriteElementString(key, settings[key]);
}
writer.WriteEndElement();
}
}
#endregion
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -