2016-08-05 9 views
0

Ich möchte Code und Text getrennt von dem unten aufgelisteten Seifenfehler extrahieren. Der Code, den ich verwende (unten aufgeführt, xml) druckt Code und Text zusammen.SoapFaultException - Code und Text extrahieren

<env:Fault xmlns:env = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:fault = "http://schemas.xmlsoap.org/soap/envelope/"> 
    <faultcode>fault:Client</faultcode> 
    <faultstring>An error occurred. Please check the detail section.</faultstring> 
    <detail> 
     <e:serviceFault xmlns:e = "http://xml.comcast.com/types"> 
      <e:messages> 
       <e:message> 
        <e:code>ERRORCODE-82828</e:code> 
        <e:text>Error Message.</e:text> 
       </e:message> 
      </e:messages> 
     </e:serviceFault> 
    </detail> 
</env:Fault> 

-Code

public void printSoapFaultClientException(SoapFaultClientException e) { 
    TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
    Transformer transformer = null; 
    transformer = transformerFactory.newTransformer(); 

    DOMResult result = new DOMResult(); 

     transformer.transform(e.getSoapFault().getSource(), result); 
     NodeList nl = ((Document)result.getNode()).getElementsByTagName("detail"); 

    System.out.println(" text content " + ((Element)nl.item(0)).getTextContent()); 

} 

Antwort

1

Hier ist ein Beispiel, es zu tun, da es ein Fehler XML ist, habe ich verwendet, nur einen Parser das XML zu analysieren und ein Feld aus zu extrahieren. SOAPFaultClientException API Auch können Sie die Störungsursache direkt helfen zu extrahieren, wenn Sie es wollen (http://docs.spring.io/spring-ws/site/apidocs/org/springframework/ws/soap/client/SoapFaultClientException.html)

File fXmlFile = new File("C:\\DevelopmentTools\\3.CODE\\SOAP.txt"); 
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
Document doc = dBuilder.parse(fXmlFile); 
doc.getDocumentElement().normalize(); 

XPath xpath = XPathFactory.newInstance().newXPath(); 
String responseStatus = xpath.evaluate("//*[local-name()='code']/text()", doc); 
String responseText = xpath.evaluate("//*[local-name()='text']/text()", doc); 
System.out.println("---> " + responseStatus); 
System.out.println("---> " + responseText); 
+0

Dank @Ramachandran. Die Spring-API gibt nur den Fehlercode und die Fehlerzeichenfolge zurück und gibt den inneren Code und den Text nicht zurück. –

+0

Der Xpath half sehr. Vielen Dank! –

+0

Ich fange (SoapFaultClientException e) im Catch-Block. Wie extrahiere ich inneren Text ?? –