2017-04-10 82 views
1

我从SOAP消息获得以下响应。我需要读取REQUEST_STATUS标记和RESULT标记的值,并将其放入数据表中以更新数据库中的表。使用C#WPF读取Soap响应

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

<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具有收藏中没有结果。

+0

什么是你的问题? –

+0

我需要C#逻辑来读取值并将其放入数据表 – venturert

+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;