2010-03-04 52 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。