2012-11-19 17 views
16

Bir XDocument öğesini XElement öğesine nasıl dönüştürürsünüz?XDocument to XElement

Arayarak arama yaptım, ancak XDocument ve XmlDocument, XDocument ve XElement arasında dönüştürme için.

public static XElement ToXElement(this XmlElement xmlelement) 
{ 
    return XElement.Load(xmlelement.CreateNavigator().ReadSubtree()); 
} 

public static XmlDocument ToXmlDocument(this XDocument xdoc) 
{ 
    var xmldoc = new XmlDocument(); 
    xmldoc.Load(xdoc.CreateReader()); 
    return xmldoc; 
} 

XDocument'i bir XElement öğesine dönüştürmek için hiçbir şey bulamadım. Herhangi bir yardım takdir edilecektir. XmlDocument

+1

Neden XElement için XDocument dönüştürmek istiyoruz XElement için XDocument kolayca dönüştürülmesi? – Diego

+2

Neden yardımcı olmuyor? – fsimonazzi

+4

Kök elemanını mı istiyorsun? xdoc.Root? – JohnD

cevap

26

XDocument:

XmlDocument xmlDoc = new XmlDocument(); 
xmlDoc.Load(xdoc.CreateReader()); 

XmlDocumentSystem.Xml.XmlNode xDoc.Root

25

Diğer insanlar buradan söyledi, ama açıkça bir var kullandığınız

XDocument xDoc = XDocument.Load(new XmlNodeReader(xmlDoc)); 

XDocument kök öğeyi almak için XDocument için XDlement öğesini XElement öğesine dönüştürmek için örnek:

XDocument doc = XDocument.Load(...); 
return doc.Root; 
+0

yukarıdaki yanıtta ... – Pawel

+5

@Pawel - Evet, ama OP'nin hala bir cevap aradığı için önemsiz kod örneği ile çok açık bir şekilde yapılması gerektiğine inandım. – Bobson

+0

Aynı referansta bu eylemleri unutmayalım, yani sonuç XElement'i düzenlerseniz, değişiklikler XDocument belgesine de yansıtılır. Bu istenebilir veya olmayabilir. – nawfal

6

XElement cvtXDocumentToXElement(XDocument xDoc) 
{ 
    XElement xmlOut = XElement.Parse(xDoc.ToString()); 
    return xmlOut; 
} 
+0

Unutmayalım ki, bu tamamen yeni bir XElement örneğini yaratır, yani XElement'e yapılan değişiklikler XDocument üzerinde yansıtılmayacaktır. Bu istenebilir veya olmayabilir. – nawfal