2010-03-04 17 views
6

Come si converte uno XmlNode in XmlNode in C#? Devo inviare l'intero oggetto XmlDocument come parametro di input a un servizio Web .NET.Converti oggetto XmlDocument in un oggetto XmlNode - C#?

+0

Un tipo complesso definito in .NET Framework sembra una scelta sbagliata per un parametro per un servizio Web. Se il servizio è tuo, potresti cercare di cambiare il tipo in stringa. Ciò consentirebbe anche di chiamarlo da altre lingue/piattaforme con relativa facilità. – TrueWill

+0

@TrueWill - Il servizio non è mio, è un terzo servizio di vendita di patty. –

risposta

7

Un XmlDocument è un XmlNode, quindi è sufficiente passare l'oggetto documento.

Oppure è possibile inviare il DocumentElement o qualsiasi nodo restituito da una query XPath.

XmlDocument doc = null; 
XmlNode node = doc; 

XmlNode node = doc.DocumentElement; 

XmlNode node = doc.SelectSingleNode("/foo/bar"); 

No fusione o la conversione è necessario a meno che non è necessario disambiguare XmlNode da XmlDocument per un metodo con overload per entrambi i tipi di parametri. In tal caso, utilizzare uno degli operatori di cast o as.

3

Se è necessario fare riferimento ad esso in modo esplicito come un uso XmlNode "come":

XmlDocument doc = ... 

XmlNode node = doc as XmlNode; 
0

un XmlDocument è derivato da XmlNode, ma si potrebbe anche inviare il XmlDocument.DocumentElement che è un XmlElement ma in ultima analisi deriva da XmlNode. Potrebbe essere necessario eseguire il check in XmlDocument.DocumentElement == null.