他的結構是這樣子的:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<code><?</code><code>xml</code> <code>version</code><code>=</code><code>"1.0"</code> <code>encoding</code><code>=</code><code>"utf-8"</code> <code>?></code>
<code><</code><code>SOAP-ENV:Envelope</code> <code>xmlns:SOAP-ENV</code><code>=</code><code>"http://www.jiangsuedu.net/justone/"</code><code>></code>
<code> </code><code><</code><code>SOAP-ENV:Header</code><code>></code>
<code> </code><code><</code><code>TransactionID</code><code>>110000000001</</code><code>TransactionID</code><code>></code>
<code> </code><code><</code><code>ServiceType</code><code>>/sms/mt</</code><code>ServiceType</code><code>></code>
<code> </code><code></</code><code>SOAP-ENV:Header</code><code>></code>
<code> </code><code><</code><code>SOAP-ENV:Body</code><code>></code>
<code> </code><code><</code><code>GateWayID</code><code>>YNMC</</code><code>GateWayID</code><code>></code>
<code> </code><code><</code><code>DstID</code><code>>15125664368</</code><code>DstID</code><code>></code>
<code> </code><code><</code><code>SrcID</code><code>>099879</</code><code>SrcID</code><code>></code>
<code> </code><code><</code><code>FeeID</code><code>>15125664368</</code><code>FeeID</code><code>></code>
<code> </code><code><</code><code>LinkID</code><code>/></code>
<code> </code><code><</code><code>MsgContent</code><code>>哈哈</</code><code>MsgContent</code><code>></code>
<code> </code><code><</code><code>ServiceID</code><code>>AYN3913101</</code><code>ServiceID</code><code>></code>
<code> </code><code><</code><code>MsgID</code><code>>1234</</code><code>MsgID</code><code>></code>
<code> </code><code><</code><code>CommitTime</code><code>>201311130101022</</code><code>CommitTime</code><code>></code>
<code> </code><code></</code><code>SOAP-ENV:Body</code><code>></code>
<code></</code><code>SOAP-ENV:Envelope</code><code>></code>
比如我們要取MsgContent節點下的内容,我們直接去取是會報錯的。比如:
<code>XmlDocument doc = </code><code>new</code> <code>XmlDocument();</code>
<code>doc.Load(</code><code>"test.xml"</code><code>);</code>
<code>string</code> <code>value = doc.SelectSingleNode(</code><code>"/SOAP-ENV:Envelope/SOAP-ENV:Body/MsgContent"</code><code>).InnerText;</code>
這裡value會發生異常,如圖:

根據錯誤提示,已經提醒我們需要命名空間管理器。
<code> </code>
<code>XmlElement root = doc.DocumentElement;</code>
<code>string</code> <code>nameSpace = root.NamespaceURI;</code>
<code>XmlNamespaceManager nsmgr = </code><code>new</code> <code>XmlNamespaceManager(doc.NameTable); ;</code>
<code>nsmgr.AddNamespace(</code><code>"SOAP-ENV"</code><code>, nameSpace);</code>
<code>string</code> <code>value = doc.SelectSingleNode(</code><code>"/SOAP-ENV:Envelope/SOAP-ENV:Body/MsgContent"</code><code>, nsmgr).InnerText;</code>
<code>Console.WriteLine(value);</code><code>//輸出:哈哈</code>
這時我們加上了XmlNamespaceManage進行處理,成功的擷取到了我們想要的内容。
本文轉自 guwei4037 51CTO部落格,原文連結:http://blog.51cto.com/csharper/1345985