我有這個SOAP響應,但我的代碼沒有讀取GetLatestReadingByMeterNoResult子項。「手動」解析SOAP響應
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header/>
<soapenv:Body>
<GetLatestReadingByMeterNoResponse xmlns="http://www.multispeak.org/Version_3.0">
<GetLatestReadingByMeterNoResult objectID="112199498" utility="xxxxx">
<meterNo>112199498</meterNo>
<deviceID>112199498</deviceID>
<readingDate>2013-02-27T17:00:00.000Z</readingDate>
<posKWh>8406</posKWh>
<kW>15.508</kW>
<kWDateTime>2013-02-27T17:00:00.000Z</kWDateTime>
</GetLatestReadingByMeterNoResult>
</GetLatestReadingByMeterNoResponse>
</soapenv:Body>
</soapenv:Envelope>
代碼:
XmlDocument resultXml = new XmlDocument();
XmlNamespaceManager mgr = new XmlNamespaceManager(resultXml.NameTable);
mgr.AddNamespace("soapenv", "http://schemas.xmlsoap.org/soap/envelope/");
mgr.AddNamespace("", "http://www.multispeak.org/Version_3.0");
resultXml.LoadXml(soapResult);
XmlNodeList nodeList = resultXml.SelectNodes("//GetLatestReadingByMeterNoResult", mgr);
節點列表返回沒有節點
您是否驗證過您的預期響應是從服務器返回的?你可以通過像SoapUI這樣的程序來做到這一點。 – TomJ 2013-02-27 19:43:50
肥皂響應是從流中返回的原始字符串。 – Fonzy 2013-02-27 19:47:20
你爲什麼不簡單使用「添加服務參考」?有沒有直接操縱XML直接用於SOAP的理由。 – 2013-02-27 19:51:17