2010-03-04 17 views
6

Comment convertir un XmlDocument en XmlNode en C#? Je dois envoyer l'objet entier XmlDocument en tant que paramètre d'entrée à un service Web .NET.Convertir l'objet XmlDocument en un objet XmlNode - C#?

+0

Un type complexe défini dans .NET Framework semble être un mauvais choix pour un paramètre d'un service Web. Si le service vous appartient, vous pourriez envisager de changer le type en chaîne. Cela vous permettrait également de l'appeler d'autres langues/plates-formes avec une relative facilité. – TrueWill

+0

@TrueWill - Le service ne m'appartient pas, il s'agit d'un serivce vendeur tiers. –

Répondre

7

Un XmlDocument est un XmlNode, vous pouvez donc simplement passer l'objet document.

Ou vous pouvez envoyer son DocumentElement, ou n'importe quel nœud renvoyé à partir d'une requête XPath.

XmlDocument doc = null; 
XmlNode node = doc; 

XmlNode node = doc.DocumentElement; 

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

Aucune coulée ou la conversion est nécessaire sauf si vous devez lever l'ambiguïté XmlNode de XmlDocument pour une méthode avec les deux types pour les surcharges de paramètres. Si tel est le cas, utilisez l'un des opérateurs as.

3

Si vous avez besoin de s'y référer explicitement comme une utilisation XmlNode « comme »:

XmlDocument doc = ... 

XmlNode node = doc as XmlNode; 
0

Un XmlDocument est dérivé de XmlNode, mais vous pouvez également envoyer le XmlDocument.DocumentElement qui est un XmlElement mais finalement dérivé à partir de XmlNode. Vous devrez peut-être vérifier dans XmlDocument.DocumentElement == null.