2013-02-27 4 views
0

У меня есть этот ответ на мыло, но мой код не читает детей 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); 

Nodelist не возвращает узлы

+0

Вы подтвердили, что ожидаемый ответ возвращается с сервера? Вы можете сделать это с помощью таких программ, как SoapUI – TomJ

+0

Мыльный ответ - это необработанная строка, возвращаемая из потока. – Fonzy

+1

Почему вы просто не используете «Добавить ссылку на службу»? Существует очень мало оснований для манипулирования XML непосредственно для SOAP. –

ответ

5

Попробуйте это:

mgr.AddNamespace("multi", "http://www.multispeak.org/Version_3.0"); 
resultXml.LoadXml(soapResult); 
XmlNodeList nodeList = resultXml.SelectNodes("//multi:GetLatestReadingByMeterNoResult", mgr); 

Даже при обращении с пространством имен по умолчанию, вы должны использовать префикс при использовании XPATH в коде.

+0

Спасибо, сработало. – Fonzy

+0

Рад это слышать. Но почему вы не использовали «Добавить ссылку на службу» и выполнялись со всем этим XML? –

Смежные вопросы