2010-03-04 83 views
6

如何在C#中将XmlDocument转换为XmlNode?我需要发送整个XmlDocument对象作为.NET Web服务的输入参数。将XmlDocument对象转换为XmlNode对象 - C#?

+0

在.NET Framework中定义的复杂类型对于Web服务的参数来说似乎是一个糟糕的选择。如果服务是你的,你可能会考虑将类型改为字符串。这也可以让你相对容易地从其他语言/平台调用它。 – TrueWill 2010-03-05 02:26:10

+0

@TrueWill - 服务不是我的,它是第三个paty供应商服务。 – 2010-03-05 11:54:05

回答

7

一个XmlDocument的是一个XmlNode的,所以你可以通过文档对象。

或者你可以发送其DocumentElement,或从XPath查询返回的节点。

XmlDocument doc = null; 
XmlNode node = doc; 

XmlNode node = doc.DocumentElement; 

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

没有铸造或转换需要,除非你需要从XmlDocument的XmlNode的歧义与重载两个参数类型的方法。如果是这种情况,请使用演员或as操作员。

3

如果您需要明确地将它称为一个XmlNode使用“为”:

XmlDocument doc = ... 

XmlNode node = doc as XmlNode; 
0

一个XmlDocument是从XmlNode的衍生,但你也可以发送XmlDocument.DocumentElement这是一个XmlElement的,但最终得到的来自XmlNode。您可能需要检入XmlDocument.DocumentElement == null。