2016-08-09 3 views
0

Я вызываю веб-службу ИБП для расчета доставки, а в случае неправильного адреса служебный вызов возвращает SoapException.Выберите дочерний элемент SoapException.Detail.InnerXML

SoapException имеет свойство Detail.InnerXMl со следующим XML:

<err:Errors xmlns:err=\"http://www.ups.com/XMLSchema/XOLTWS/Error/v1.1\"> 
    <err:ErrorDetail> 
     <err:Severity>Hard</err:Severity> 
     <err:PrimaryErrorCode> 
      <err:Code>111286</err:Code> 
      <err:Description>CAa is not a valid state for the specified shipment.</err:Description> 
     </err:PrimaryErrorCode> 
    </err:ErrorDetail> 
</err:Errors> 

Я желаю, чтобы извлечь текст из <Description> элемента.

Почему это не работает:

try 
{ 
} 
catch (SoapException ex) 
{ 
    XmlNode node = ex.Detail.SelectSingleNode("//Description"); 
    //node is null 
} 

ответ

0

разбора XML легко с LinqToXml:

var errors = XDocument.Parse(yourxmlstring) 
       .Descendants("errors") 
       .Select(e => new 
       { 
        code = (int)e.Element("code"), 
        desc = (string)e.Element("description") 
       }) 
       .ToList(); 
+0

Это возвращает список размера 0, используя 'ex.Detail.InnerXML' вместо вашего 'yourxmlstring' –

+0

' yourxmlstring' должно содержать ваше полное сообщение «SoapException». –

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