using System; using System.Xml; using System.Xml.Linq; namespace Umbraco.Core { /// /// Extension methods for xml objects /// internal static class XmlExtensions { public static T AttributeValue(this XmlNode xml, string attributeName) { if (xml == null) throw new ArgumentNullException("xml"); if (xml.Attributes == null) return default(T); if (xml.Attributes[attributeName] == null) return default(T); var val = xml.Attributes[attributeName].Value; var result = val.TryConvertTo(); if (result.Success) return result.Result; return default(T); } public static XElement GetXElement(this XmlNode node) { XDocument xDoc = new XDocument(); using (XmlWriter xmlWriter = xDoc.CreateWriter()) node.WriteTo(xmlWriter); return xDoc.Root; } public static XmlNode GetXmlNode(this XElement element) { using (XmlReader xmlReader = element.CreateReader()) { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(xmlReader); return xmlDoc.FirstChild; } } public static XmlNode GetXmlNode(this XElement element, XmlDocument xmlDoc) { using (XmlReader xmlReader = element.CreateReader()) { xmlDoc.Load(xmlReader); return xmlDoc.DocumentElement; } } } }