Mega Code Archive

 
Categories / C# / XML
 

Attempts to get and cast attribute from an XmlElement

//http://validationframework.codeplex.com/ //License:  Microsoft Permissive License (Ms-PL) v1.1   using System; using System.Xml; namespace ValidationFramework.Extensions {     public static class XmlElementExtensions     {         /// <summary>         /// Attempts to get and cast attribute from a <see cref="XmlElement"/>. If the item does not exist or can't be casted exceptions are thrown.         /// </summary>         /// <typeparam name="T">The <see cref="Type"/> to try to convert to.</typeparam>         /// <param name="element">The <see cref="XmlElement"/> to extract the attribute value from.</param>         /// <param name="key">The key to use or the extraction</param>         /// <param name="defaultValue">The default value if <paramref name="key"/> is not found.</param>         /// <returns>The value from <paramref name="attributes"/> if <paramref name="key"/> exists; otherwise <paramref name="defaultValue"/>.</returns>         /// <exception cref="ArgumentOutOfRangeException"></exception>         internal static T GetAttribute<T>(this XmlElement element, string key)         {             if (!element.HasAttribute(key))                 throw new ArgumentOutOfRangeException(string.Format("The key '{0}' cannot be found in xml element.", key));             var stringValue = element.GetAttribute(key);             var converter = System.ComponentModel.TypeDescriptor.GetConverter(typeof(T));             return (T)converter.ConvertFromString(stringValue);         }    } }