//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 convert an attribute from a <see cref="XmlElement"/>. If the item does not exist or can't be converted a <paramref name="defaultValue"/> is returned.
/// </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>
internal static T GetAttribute<T>(this XmlElement element, string key, T defaultValue)
{
if (!element.HasAttribute(key))
return defaultValue;
var stringValue = element.GetAttribute(key);
var converter = System.ComponentModel.TypeDescriptor.GetConverter(typeof(T));
if (!converter.CanConvertFrom(typeof(string)))
return defaultValue;
return (T)converter.ConvertFromString(stringValue);
}
}
}
|