2016-08-03 12 views
0

Ich versuche, den Tag-Wert aus der unteren String Antwort von Salesforce,Wie kann der Elementwert von der SOAP-Antwort mithilfe von Java abgerufen werden?

<?xml version="1.0" encoding="UTF-8"?> 
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://soap.sforce.com/2006/04/metadata"> 
    <soapenv:Body> 
     <listMetadataResponse> 
     <result> 
      <createdById>00528000001m5RRAAY</createdById> 
      <createdByName>Hariprasath Thanarajah</createdByName> 
      <createdDate>1970-01-01T00:00:00.000Z</createdDate> 
      <fileName>objects/EmailMessage.object</fileName> 
      <fullName>EmailMessage</fullName> 
      <id /> 
      <lastModifiedById>00528000001m5RRAAY</lastModifiedById> 
      <lastModifiedByName>Hariprasath Thanarajah</lastModifiedByName> 
      <lastModifiedDate>1970-01-01T00:00:00.000Z</lastModifiedDate> 
      <namespacePrefix /> 
      <type>CustomObject</type> 
     </result> 
     </listMetadataResponse> 
    </soapenv:Body> 
</soapenv:Envelope> 

Oben haben wir <fullName> den Tag hatten immer zu bekommen. Ich muss den Wert innerhalb des Tags abrufen und in das String-Array einfügen. Ich habe es mit der Substring-Methode versucht, aber es gibt nur einen Wert zurück. Kann mir jemand vorschlagen, dies zu tun?

+0

Verwenden [XPath] (http://docs.oracle.com/javase/8/docs/api/javax /xml/xpath/package-summary.html) oder [create a DocumentBuilder] (http://docs.oracle.com/javase/8/docs/api/javax/xml/parsers/DocumentBuilderFactory.html#newDocumentBuilder--), parse die SOAP-Nachricht in ein Dokument und verwende [getElementsByTagName] (http://docs.oracle.com/javase/8/docs/api/org/w3c/dom/Document.html#getElementsByTagName-java.lang. String-). – VGR

+0

Ich habe es mit dieser Methode versucht. Für mich geht das. – Hariprasath

Antwort

1

I wie unten versucht haben,

Von oben Code, werden Sie ids Liste. Danach können Sie wie unter denen in den String Array und zurück diejenigen in String-Array setzen,

List<String> output = getFullNameFromXml(response, "fullName"); 
String[] strarray = new String[output.size()]; 
output.toArray(strarray); 
System.out.print("Response Array is "+Arrays.toString(strarray)); 
0

Wenn Sie nur dieses einzelne Element analysieren möchten, können Sie einen SAX- oder StAX-Parser verwenden, wie hier beschrieben https://www.javacodegeeks.com/2013/05/parsing-xml-using-dom-sax-and-stax-parser-in-java.html.

SAXParserFactory factory = SAXParserFactory.newInstance(); 
    SAXParser saxParser = factory.newSAXParser(); 

    DefaultHandler handler = new DefaultHandler() { 

    boolean fullName = false; 

    public void startElement(String uri, String localName,String qName, 
       Attributes attributes) throws SAXException { 

     System.out.println("Start Element :" + qName); 

     if (qName.equals("fullName")) { 
      fullName = true; 
     } 
    } 

    public void characters(char ch[], int start, int length) throws SAXException { 

     if (fullName) { 
      System.out.println("Full Name : " + new String(ch, start, length)); 
      fullName = false; 
     } 
    } 
} 
saxParser.parse(mySoapResponse, handler); 

Oder Sie können für die Erstellung eines SOAP-Client mehr wollen auf JAX-WS-API zum Lesen Ihres Salesforce Web-Service zu nutzen.

+0

Link-only-Antworten werden nicht empfohlen, da andere Websites dazu neigen, sich im Laufe der Zeit zu verschieben oder zu verschwinden. Es ist besser, eine Zusammenfassung der Informationen, die Sie verlinkt haben, und/oder ein kurzes Beispiel zu geben. – VGR