Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Web;
- using System.Xml;
- namespace ContentManagement
- {
- /// <summary>
- /// Denna klass jobbar mot en XML fil för att hantera innehåll. Letar som standard efter en fil med namnet Content.xml i katalogerna AppData eller Bin.
- /// </summary>
- public class ContentManager
- {
- private string _xmlFileName = "Content.xml";
- private XmlDocument _xmlDocument;
- private XmlNode _rootNode;
- public ContentManager() : this(null)
- {
- }
- public ContentManager(string documentPath)
- {
- DocumentPath = documentPath;
- LoadXml();
- }
- /// <summary>
- /// Namnet på den XML fil som ska användas. Standardvärde är Content.xml.
- /// </summary>
- public string XmlFileName
- {
- get { return _xmlFileName; }
- set { _xmlFileName = value; }
- }
- /// <summary>
- /// Använd för att ange en specifik sökväg till xml dokumentet,
- /// </summary>
- public string DocumentPath { get; set; }
- /// <summary>
- /// Hämtar ett ContentItem.
- /// </summary>
- /// <param name="xpath">XPath uttryck, exempelvis "//messages/message" för att hämta ett meddelande.</param>
- /// <returns></returns>
- public ContentItem GetSingle(string xpath)
- {
- ContentItem contentItem = null;
- XmlNode xmlNode = _rootNode.SelectSingleNode(xpath);
- if (xmlNode != null)
- {
- contentItem = CreateContentFromXmlNode(xmlNode);
- }
- return contentItem;
- }
- /// <summary>
- /// Hämtar flera ContentItems.
- /// </summary>
- /// <param name="xpath">XPath uttryck, exempelvis "//messages/message" för att hämta alla meddelanden.</param>
- /// <returns></returns>
- public IList<ContentItem> GetMany(string xpath)
- {
- IList<ContentItem> contentItems = new List<ContentItem>();
- XmlNodeList xmlNodes = _rootNode.SelectNodes(xpath);
- if (xmlNodes != null)
- {
- foreach (XmlNode xmlNode in xmlNodes)
- {
- ContentItem contentItem = CreateContentFromXmlNode(xmlNode);
- contentItems.Add(contentItem);
- }
- }
- return contentItems;
- }
- public IList<ContentItem> GetChildren(ContentItem contentItem)
- {
- IList<ContentItem> children = new List<ContentItem>();
- return children;
- }
- private ContentItem CreateContentFromXmlNode(XmlNode xmlNode)
- {
- ContentItem contentItem = new ContentItem();
- contentItem.Name = xmlNode.Name;
- contentItem.Value = xmlNode.InnerText;
- return contentItem;
- }
- private void LoadXml()
- {
- _xmlDocument = new XmlDocument();
- if (string.IsNullOrEmpty(DocumentPath))
- {
- DocumentPath = GetAppDataFolderFilePath();
- }
- if(string.IsNullOrEmpty(DocumentPath))
- {
- throw new ArgumentException("Egenskapen DocumentPath är tom och mappen App_Data kunde inte hittas. Någon av dessa måste åtgärdas.");
- }
- LoadXmlFromPath(DocumentPath);
- _rootNode = _xmlDocument.DocumentElement;
- }
- private void LoadXmlFromPath(string path)
- {
- try
- {
- _xmlDocument.Load(path);
- }
- catch (FileNotFoundException ex)
- {
- throw new FileNotFoundException("Kunde inte någon fil för sökvägen " + path, ex);
- }
- }
- private string GetAppDataFolderFilePath()
- {
- string path;
- try
- {
- path = Path.Combine(HttpContext.Current.Server.MapPath("App_Data"), XmlFileName);
- }
- catch
- {
- path = string.Empty;
- }
- return path;
- }
- }
- }
Add Comment
Please, Sign In to add comment