using System.Xml; using System.Xml.Linq; namespace XmlLib { /// /// Provides extension methods for simple conversion between System.Xml and System.Xml.Linq classes. /// /// From: http://brianary.blogspot.com/2010/02/converting-between-xdocument-and.html public static class XmlLinqConversionExtensions { /// /// Converts an XDocument to an XmlDocument. /// /// The XDocument to convert. /// The equivalent XmlDocument. public static XmlDocument ToXmlDocument(this XDocument xdoc) { var xmldoc = new XmlDocument(); xmldoc.Load(xdoc.CreateReader()); return xmldoc; } /// /// Convert an XElement to an XmlDocument. /// /// /// public static XmlDocument ToXmlDocument(this XElement xelement) { var xmldoc = new XmlDocument(); xmldoc.Load(xelement.CreateReader()); return xmldoc; } /// /// Converts an XmlDocument to an XDocument. /// /// The XmlDocument to convert. /// The equivalent XDocument. public static XDocument ToXDocument(this XmlDocument xmldoc) { return XDocument.Load(xmldoc.CreateNavigator().ReadSubtree()); } /// /// Converts an XmlDocument to an XElement. /// /// /// public static XElement ToXElement(this XmlDocument xmldoc) { return ToXDocument(xmldoc).Root; } /// /// Converts an XElement to an XmlElement. /// /// The XElement to convert. /// The equivalent XmlElement. public static XmlElement ToXmlElement(this XElement xelement) { return new XmlDocument().ReadNode(xelement.CreateReader()) as XmlElement; } /// /// Converts an XmlElement to an XElement. /// /// The XmlElement to convert. /// The equivalent XElement. public static XElement ToXElement(this XmlElement xmlelement) { return XElement.Load(xmlelement.CreateNavigator().ReadSubtree()); } } }