使用C#WPF读取Soap响应

时间:2017-04-10 11:46:08

标签: soap xml-parsing

我从SOAP消息得到以下响应。我需要读取REQUEST_STATUS标记和RESULT标记中的值,并将其放在数据表中以更新数据库中的表。

请帮助我,因为我是第一次这样做。

    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
      <CalculationResponse xmlns="http://www.someurl.com/">
       <OUTPUT>
         <REQUEST_STATUS>
           <IS_SUCCESS>true</IS_SUCCESS>
           <IS_PARTIAL_SUCCESS>true</IS_PARTIAL_SUCCESS>
         </REQUEST_STATUS>
       <RESULT>
          <Value>
              <inset1>1<inset1>
         </Value>
         <Value>
              <inset2>2<inset2>
         </Value>
       </RESULT>....

我试过C#代码:

XDocument doc = XDocument.Load(Environment.CurrentDirectory + "\\out.xml");
XNamespace ns = @"http://www.someurl.com/";
bool validation = false;
var root = doc.Descendants("CalculationResponse").Elements("OUTPUT").Elements("REQUEST_STATUS");
var valuestr = from r in root.Elements("IS_SUCCESS")
            select r.Value;
 validation = (valuestr.ToString()=="true")?true:false;

我总是得到valuestr在集合中没有结果。

1 个答案:

答案 0 :(得分:0)

以下是我要实现的代码:

C#代码:

XNamespace ns = @"http://www.someurl.com";
bool validation = false;
var parent = doc.Root.Descendants(ns + "CalculationResponse").Descendants(ns + "OUTPUT");
var valuestr = (from r in parent.Descendants(ns + "REQUEST_STATUS").Descendants(ns + "IS_SUCCESS")
               select r.Value).ToList();

validation = (valuestr[0] == "true") ? true : false;