C# 阅读soapxml答案

C# 阅读soapxml答案,c#,xml,soap,C#,Xml,Soap,我必须阅读下面文件中的SOAP答案 <?xml version="1.0"?> <Envelopes> <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <env:Body> <env:Fault> <env:Code> <env:Value>env:Receiver</env:Value>

我必须阅读下面文件中的SOAP答案

<?xml version="1.0"?>
<Envelopes>
 <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
  <env:Body>
  <env:Fault>
   <env:Code>
    <env:Value>env:Receiver</env:Value>
    <env:Subcode>
     <env:Value>-1</env:Value>
    </env:Subcode>
   </env:Code>
  <env:Reason>
   <env:Text xml:lang="en">CServiceData::SetPropertyValue failed; '</env:Text>
 </env:Reason>
 <env:Detail>
<Object>4</Object>
<ObjectIndex>1</ObjectIndex>
<Command>AddObject</Command>
<SessionID>B8FE2330-4252-4BB1-A3EE-053F4413A0C0</SessionID>
 </env:Detail>
</env:Fault>
</env:Body>
</env:Envelope>
</Envelopes>

环境:接收器
-1
CServiceData::SetPropertyValue失败;'
4.
1.
添加对象
B8FE2330-4252-4BB1-A3EE-053F4413A0C0
我只需要文本标记的内容
CServiceData::SetPropertyValue失败

您可以使用:

或者您可以使用:


为什么不直接使用“添加服务引用”?看,问题是什么?
public string GetErrorMessage(string xml)
{
    using (StringReader sr = new StringReader(xml))
    {
        var doc = new XPathDocument(sr);
        var nav = doc.CreateNavigator();
        var xmlNs = new XmlNamespaceManager(nav.NameTable);
        xmlNs.AddNamespace("env", @"http://www.w3.org/2003/05/soap-envelope");
        var node = nav.SelectSingleNode("//env:Text", xmlNs);
        return node.Value;
    }
}
public string GetErrorMessage(string xml)
{
    var doc = XDocument.Parse(xml);
    var node = doc.Descendants(XName.Get("Text", @"http://www.w3.org/2003/05/soap-envelope"))
                  .FirstOrDefault();
    return node.Value;
}