2017-07-15 1 views
0

Ich mache eine Anfrage an die API von Salesforce fusionieren und eine Antwort wie diese bekommen:Parsen von XML für bestimmte Artikel mit ElementTree

xml_result = '<?xml version="1.0" encoding="UTF-8"?> 
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="urn:partner.soap.sforce.com"> 
    <soapenv:Header> 
     <LimitInfoHeader> 
      <limitInfo> 
       <current>62303</current> 
       <limit>2680000</limit><type>API REQUESTS</type></limitInfo> 
     </LimitInfoHeader> 
    </soapenv:Header> 
    <soapenv:Body> 
     <mergeResponse> 
      <result> 
       <errors> 
        <message>invalid record type</message> 
        <statusCode>INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY</statusCode> 
       </errors> 
       <id>003skdjf494244</id> 
       <success>false</success> 
      </result> 
     </mergeResponse> 
    </soapenv:Body> 
</soapenv:Envelope>' 

ich in der Lage sein möchten, diese Antwort und wenn der Erfolg zu analysieren = false , geben Sie die Fehler, statusCode und den Nachrichtentext zurück.

Ich habe versucht, die folgenden:

import xml.etree.ElementTree as ET 
tree = ET.fromstring(xml_result) 

root.find('mergeResponse') 
root.find('{urn:partner.soap.sforce.com}mergeResponse') 
root.findtext('mergeResponse') 
root.findall('{urn:partner.soap.sforce.com}mergeResponse') 

... und ein paar andere Variationen von find, findtext und findall aber ich kann nicht scheinen diese keine Ergebnisse zurück. Hier bleibe ich stecken. Ich habe versucht, den ElementTree-Dokumenten zu folgen, aber ich verstehe nicht, wie man den Baum nach bestimmten Elementen analysiert.

Antwort