2012-11-19 103 views
16

如何將XDocument轉換爲XElement?將XDocument轉換爲XElement

我通過搜索發現了以下內容,但它用於在XDocument和XmlDocument之間轉換,而不是XDocument和XElement。

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轉換爲XElement。任何幫助,將不勝感激。

+1

爲什麼你要轉換的XDocument到的XElement? – Diego

+2

爲什麼它沒有幫助? – fsimonazzi

+4

你只是想要根元素嗎? xdoc.Root? – JohnD

回答

26

的XDocument到的XmlDocument:

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

的XmlDocument到的XDocument

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

要從的XDocument獲得根元素使用xDoc.Root

25

其他人說,但這裏是明確一個將XDocument轉換爲XElement的示例:

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

它在上面的響應... – Pawel

+5

@Pawel - 是的,但我覺得有必要用非常明確的代碼示例,因爲OP仍在尋找答案。 – Bobson

+0

不要忘記在同一個引用上執行此操作,即如果編輯了結果XElement,則更改也會反映在XDocument doc上。這可能會或可能不會被期望。 – nawfal

6

從簡單的XDocument轉換的XElement

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

不要忘記這會創建一個全新的XElement實例,即對XElement所做的更改不會反映在XDocument上。這可能會或可能不會被期望。 – nawfal