2016-07-29 7 views
1

Von den letzten paar Tagen bekomme ich versuchte, err zu extrahieren: Fehler, die aus folgenden XML C#XML Child -Knotenwert von soapxml

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soapenv:Header /> 
    <soapenv:Body> 
    <soapenv:Fault> 
     <faultcode>Client</faultcode> 
     <faultstring>An exception has been raised as a result of client data.</faultstring> 
     <detail> 
     <err:Errors xmlns:err="http://www.ups.com/XMLSchema/XOLTWS/Error/v1.1"> 
      <err:ErrorDetail> 
      <err:Severity>Hard</err:Severity> 
      <err:PrimaryErrorCode> 
       <err:Code>9510131</err:Code> 
       <err:Description>Order has already been canceled</err:Description> 
      </err:PrimaryErrorCode> 
      </err:ErrorDetail> 
     </err:Errors> 
     </detail> 
    </soapenv:Fault> 
    </soapenv:Body> 
</soapenv:Envelope> 

aber sachdienliche Lösung nicht finden können. Dies ist, was ich versucht habe:

XmlDocument xDoc = new XmlDocument(); 
xDoc.LoadXml(strResponse); 
XmlNamespaceManager xmlnsManager = new XmlNamespaceManager(xDoc.NameTable); 
xDoc.SelectSingleNode(
    "soapenv:Envelope/soap‌​env:Body/soapenv:Fault/err:ErrorDetail", 
     xmlnsManager).InnerText; 

Es sieht aus wie der SelectSingleNode nichts zurückgibt.

+0

Wo und wie erhalten Sie dieses XML? Ist es schon in einem XDocument? Welche Option hast du schon ausprobiert? Ich möchte nichts vorschlagen, was du bereits versucht hast, denn das ist eine Verschwendung von mir und deiner Zeit. – rene

+0

Ich benutze UPS Webs Dienste und wenn ich Abholung storniere, bekomme ich diese XML als Rückgabe –

+0

auch ja es ist in XDocument –

Antwort

2

Sie müssen add the namespaces auf Ihre NamespaceManager:

xmlnsManager.AddNamespace("soapenv","http://schemas.xmlsoap.org/soap/envelope/"); 
xmlnsManager.AddNamespace("err","http://www.ups.com/XMLSchema/XOLTWS/Error/v1.1"); 

xDoc.SelectSingleNode(
"/soapenv:Envelope/soap‌​env:Body/soapenv:Fault/err:ErrorDetail", 
    xmlnsManager).InnerText; 

bevor Sie SelectSingleNode nennen. Stellen Sie sicher, dass Sie die Namespace-Aliase in Ihrem Namespacemanager mit dem in Ihrem XPATH-Ausdruck verwendeten Alias ​​synchronisieren.

Verwandte Themen