2013-07-27 46 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);