一般的xml文件相信大家都會解析了,但是遇到有命名空間的帶前綴的xml,對於新手可能會有點問題。我這裡在論壇解答的時候就遇到過一題,見怎麼獲取XML節點裡面的內容,在線求教。這裡給大家演示一下。 他的結構是這樣子的: [plain] <?xml version="1.0" encoding="utf-8" ?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.jiangsuedu.net/justone/"> <SOAP-ENV:Header> <TransactionID>110000000001</TransactionID> <ServiceType>/sms/mt</ServiceType> </SOAP-ENV:Header> <SOAP-ENV:Body> <GateWayID>YNMC</GateWayID> <DstID>15125664368</DstID> <SrcID>099879</SrcID> <FeeID>15125664368</FeeID> <LinkID/> <MsgContent>哈哈</MsgContent> <ServiceID>AYN3913101</ServiceID> <MsgID>1234</MsgID> <CommitTime>201311130101022</CommitTime> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 比如我們要取MsgContent節點下的內容,我們直接去取是會報錯的。比如: [csharp] XmlDocument doc = new XmlDocument(); doc.Load("test.xml"); string value = doc.SelectSingleNode("/SOAP-ENV:Envelope/SOAP-ENV:Body/MsgContent").InnerText; 這裡value會發生異常,如圖: 根據錯誤提示,已經提醒我們需要命名空間管理器。 [csharp] XmlDocument doc = new XmlDocument(); doc.Load("test.xml"); XmlElement root = doc.DocumentElement; string nameSpace = root.NamespaceURI; XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable); ; nsmgr.AddNamespace("SOAP-ENV", nameSpace); string value = doc.SelectSingleNode("/SOAP-ENV:Envelope/SOAP-ENV:Body/MsgContent", nsmgr).InnerText; Console.WriteLine(value);//輸出:哈哈 這時我們加上了XmlNamespaceManage進行處理,成功的獲取到了我們想要的內容。