2013-07-27 69 views
1

我必須將整個XML文檔傳遞給第三方函數。該參數是XmlElement從XDocument獲取XmlElement

要做到這一點到現在爲止,我已經成功地利用了這一點:

XmlDocument doc; 
//doc = ... 
XmlElement root = doc.DocumentElement; 
3rdPartyFunction(root); 

但現在我使用的XDocument代替XmlDocument

XDocument doc; 
//doc = ... 
//how to call 3rdPartyFunction? 

如何調用該函數這個案例?我可以從「Xml」轉換爲「X」嗎?

+0

爲什麼你不只是讀它作爲擺在首位的'XmlElement'? –

+0

@JeffMercado我不控制第三方功能,也無法更改它。 –

+0

@ roger.james刪除我的帖子,因爲建議變得無關緊要。在這種情況下,你[會看@這篇文章](http://stackoverflow.com/questions/1508572/converting-xdocument-to-xmldocument-and-vice-相反)進行轉換。 –

回答

5

使用此:

var newDoc = new XmlDocument(); 
newDoc.LoadXml(doc.ToString()); 
3rdPartyFunction(newDoc); 
+0

如果xml文件有250K行,會發生什麼情況? :) –

+0

你說得對,最好使用doc.CreateReader()和newDoc.Load() –

+0

參數類型是'XmlElement';你不能只傳遞'XmlDocument'。 – mousio

2

[更新]

XmlDocument xmldoc = new XmlDocument(); 
using (XmlReader reader = xdoc.CreateReader()) 
{ 
    xmldoc.Load(reader); 
} 
XmlElement root = xmldoc.DocumentElement; 
3rdPartyFunction(root);