Converting XmlElement To XElement and vice-versa in C# [closed] using System; using System.Xml; using System.Xml.Linq; namespace MyTest { internal class Program { private static void Main(string[] args) { var xmlDocument = new XmlDocument(); xmlDocument.LoadXml("Test"); var xDocument = xmlDocument.ToXDocument(); var newXmlDocument = xDocument.ToXmlDocument(); Console.ReadLine(); } } public static class DocumentExtensions { public static XmlDocument ToXmlDocument(this XDocument xDocument) { var xmlDocument = new XmlDocument(); using(var xmlReader = xDocument.CreateReader()) { xmlDocument.Load(xmlReader); } return xmlDocument; } public static XDocument ToXDocument(this XmlDocument xmlDocument) { using (var nodeReader = new XmlNodeReader(xmlDocument)) { nodeReader.MoveToContent(); return XDocument.Load(nodeReader); } } } } using System.Xml; using System.Xml.Linq; #region Extention Method public static XElement ToXElement(this XmlElement element) { return XElement.Parse(element.OuterXml); } public static XmlElement ToXmlElement(this XElement element) { var doc = new XmlDocument(); doc.LoadXml(element.ToString()); return doc.DocumentElement; } #endregion System.Xml.XmlElement systemXml = (new XElement("nothing")).ToXmlElement(); System.Xml.Linq.XElement linqXml = systemXml.ToXElement(); using System.Xml; using System.Xml.Linq; namespace www.dimaka.com { internal static class LinqHelper { public static XmlDocument ToXmlDocument(this XDocument xDocument) { var xmlDocument = new XmlDocument(); using (var reader = xDocument.CreateReader()) { xmlDocument.Load(reader); } var xDeclaration = xDocument.Declaration; if (xDeclaration != null) { var xmlDeclaration = xmlDocument.CreateXmlDeclaration( xDeclaration.Version, xDeclaration.Encoding, xDeclaration.Standalone); xmlDocument.InsertBefore(xmlDeclaration, xmlDocument.FirstChild); } return xmlDocument; } } } XDocument y = XDocument.Parse(pXmldoc.OuterXml); // where pXmldoc is of type XMLDocument