2010-03-04 21 views
6

¿Cómo convierto un XmlDocument a un XmlNode en C#? Necesito enviar el objeto completo XmlDocument como un parámetro de entrada a un servicio web .NET.Convierte el objeto XmlDocument en un objeto XmlNode - C#?

+0

Un tipo complejo definido en .NET Framework parece ser una mala elección para un parámetro de un servicio web. Si el servicio es suyo, puede considerar cambiar el tipo a cadena. Eso también le permitirá llamarlo desde otros idiomas/plataformas con relativa facilidad. – TrueWill

+0

@TrueWill - El servicio no es mío, es un tercer servicio de vendedor paty. –

Respuesta

7

Un XmlDocument es un XmlNode, por lo que puede simplemente pasar el objeto del documento.

O podría enviar su DocumentElement, o cualquier Node devuelto de una consulta XPath.

XmlDocument doc = null; 
XmlNode node = doc; 

XmlNode node = doc.DocumentElement; 

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

No colada o la conversión es necesaria a menos que necesite para eliminar la ambigüedad XmlNode de XmlDocument para un método con sobrecargas para ambos tipos de parámetros. Si este es el caso, use cualquiera de los operadores de conversión o as.

3

Si necesita hacer referencia a ella de forma explícita como un uso XmlNode "como":

XmlDocument doc = ... 

XmlNode node = doc as XmlNode; 
0

un XmlDocument se deriva de XmlNode, pero también se podría enviar el XmlDocument.DocumentElement que es un XmlElement pero en última instancia deriva de XmlNode. Es posible que deba verificar XmlDocument.DocumentElement == null.

Cuestiones relacionadas