Read an XML file from the xml element and the xml attribute : Attribute « XML « C# / C Sharp






Read an XML file from the xml element and the xml attribute

 

using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using System.Xml;
using System.IO;
using System.Security.Permissions;
using System.Configuration;

namespace Koossery.MVCwin.Util
{
    /// <summary>
    /// Read an XML file from the xml element and the xml attribute
    /// </summary>
    public class XmlUtility
    {
        // Fields
        private static volatile Hashtable _configFileHashTable;
        private const string PROTOCOL_SEPARATOR = "://";

        // Methods
        static XmlUtility()
        {
            _configFileHashTable = null;
        }

        public XmlUtility()
        {
        }

        private static bool FileExists(string filePath)
        {
            if (File.Exists(filePath))
            {
                return true;
            }
            FileIOPermission permission = null;
            try
            {
                permission = new FileIOPermission(FileIOPermissionAccess.Read, filePath);
            }
            catch
            {
                return false;
            }
            try
            {
                permission.Demand();
            }
            catch (Exception exception)
            {
                throw new ConfigurationException(string.Format("Doesn't have the right to read the config file \"{0}\". Cause : {1}", filePath, exception.Message), exception);
            }
            return false;
        }

        private static XmlDocument GetConfigAsXmlDocument(string resourcePath)
        {
            XmlDocument document = new XmlDocument();
            XmlTextReader reader = null;
            try
            {
                try
                {
                    reader = new XmlTextReader(resourcePath);
                    document.Load(reader);
                }
                catch (Exception exception)
                {
                    throw new ConfigurationException(string.Format("Unable to load config file \"{0}\". Cause : {1}", resourcePath, exception.Message), exception);
                }
            }
            finally
            {
                if (reader != null)
                {
                    reader.Close();
                }
            }
            return document;
        }

        private static string GetFileSystemResourceWithoutProtocol(string filePath)
        {
            int index = filePath.IndexOf("://");
            if (index == -1)
            {
                return filePath;
            }
            if (filePath.Length > (index + "://".Length))
            {
                while (filePath[++index] == '/')
                {
                }
            }
            return filePath.Substring(index);
        }

        public static string getKeyValueFromXmlConfigFile(string configFileName, string xmlNodeName, string key)
        {
            string attribute;
            try
            {
                configFileName = GetFileSystemResourceWithoutProtocol(configFileName);
                XmlDocument document = null;
                if (_configFileHashTable != null)
                {
                    document = (XmlDocument)_configFileHashTable[configFileName];
                }
                if ((document == null) || (_configFileHashTable == null))
                {
                    lock (typeof(Hashtable))
                    {
                        if ((document == null) || (_configFileHashTable == null))
                        {
                            LoadAndCacheXmlConfigFile(configFileName);
                            document = (XmlDocument)_configFileHashTable[configFileName];
                        }
                    }
                }
                XmlNodeList elementsByTagName = document.GetElementsByTagName(xmlNodeName);
                XmlNodeReader reader = null;
                attribute = null;
                foreach (XmlNode node in elementsByTagName)
                {
                    reader = new XmlNodeReader(node);
                    reader.Read();
                    attribute = reader.GetAttribute(key);
                    attribute.Trim();
                }
            }
            catch (Exception exception)
            {
                throw new ConfigurationException("Message not found for key =" + key + ": " + exception.Message);
            }
            return attribute;
        }

        private static void LoadAndCacheXmlConfigFile(string xmlConfigFile)
        {
            xmlConfigFile = GetFileSystemResourceWithoutProtocol(xmlConfigFile);
            FileExists(xmlConfigFile);
            XmlDocument configAsXmlDocument = GetConfigAsXmlDocument(xmlConfigFile);
            if (_configFileHashTable == null)
            {
                _configFileHashTable = new Hashtable();
            }
            _configFileHashTable[xmlConfigFile] = configAsXmlDocument;
        }
    }
}

   
  








Related examples in the same category

1.Set Attribute Value
2.Get Attribute Value
3.Get Int value from xml attribute
4.Get Attribute value (2)
5.Get attribute or return default value
6.Get Bool Attribute Or Throw exception
7.Get attribute value and convert to integer type
8.Get attribute value and convert to integer type or throw exception
9.Get Attribute and return Int64
10.Get Attribute and return Int64 or throw exception
11.Adds an XmlAttribute to a XmlNode
12.Get boolean value if an attribute is 1 or true
13.Attempts to get and cast attribute from an XmlElement
14.Attempts to get and convert an attribute from an XmlElement
15.Gets a string from an attribute or node.
16.Remove all the xml namespaces (xmlns) attributes in the xml string
17.Get Attribute With Conversion
18.Find a single Attribute of the type 'attributeType' from the supplied class
19.Create Xml Attribute, Node
20.Create Attribute, Text Element, Image Element,Read Image Element
21.Attribute Util
22.Find and get Attribute value
23.Finds an attribute with the given name in the given XML node and returns the attribute of the value.
24.Parse Attribute
25.Get attribute value (3)
26.Get int type attribute value
27.Get attribute value or throw exception
28.Create and set attribute
29.Adds a new attribute to the given target element.
30.Get Text Attribute
31.Get Int Attribute