⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xmlblogprovider.cs

📁 个人博客系统
💻 CS
📖 第 1 页 / 共 2 页
字号:
        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&lt;Category&gt; 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 + -