vulisiramu Ответов: 1

Как прочитать ответ soap с помощью C#?


Ответ мыла как:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Body>
    <TASIntegrationRequestResponse xmlns="http://tempuri.org/">
      <TASIntegrationRequestResult>
        <status>true</status>
        <resMsg>Profile integrated to TAS.</resMsg>
      </TASIntegrationRequestResult>
    </TASIntegrationRequestResponse>
  </soap:Body>
</soap:Envelope>


Что я уже пробовал:

Я пытаюсь прочитать это как:

XmlNamespaceManager xmlnsManager = новый System.Xml.XmlNamespaceManager(xmlDoc.NameTable);

xmlnsManager.AddNamespace("мыло", "http://schemas.xmlsoap.org/soap/envelope/");
xmlnsManager.AddNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
xmlnsManager.AddNamespace("xsd", "http://www.w3.org/2001/XMLSchema");
xmlnsManager.Addnamespace дает("Си", "http://tempuri.org/");

// Вы бы получили доступ к полному пути следующим образом
Узел руководство = xmlDoc.Метод selectsinglenode("/мыло:конверт/мыло:тело/
si:TASIntegrationRequestResponse/si:TASIntegrationRequestResult/si.status", xmlnsManager);
строка strstatus = узел.Через свойство innerText;

Но он получает исключение и не читает значения состояния.
Пожалуйста, помогите мне.

MadMyche

Как насчет того, чтобы рассказать нам, что ... Exception есть?

1 Ответов

Рейтинг:
1

Richard Deeming

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

В этом случае вы получаете NullReferenceException, потому что SelectSingleNode возвращается null.

Это происходит потому, что у вас есть недопустимое выражение XPath:

/soap:Envelope/soap:Body/si:TASIntegrationRequestResponse/si:TASIntegrationRequestResult/si.status
Что окончательной . должно быть а :
/soap:Envelope/soap:Body/si:TASIntegrationRequestResponse/si:TASIntegrationRequestResult/si:status