def parse(self, source): """Parse SOAPFault element""" if ElementTree.iselement(source): self.elem = source else: self.elem = self._parse(source) for elem in self.elem: localName = QName.getLocalPart(elem.tag) if localName == SOAPFault.FAULT_CODE_ELEMENT_LOCAL_NAME: self.faultCode = elem.text.strip() elif localName == SOAPFault.FAULT_STRING_ELEMENT_LOCAL_NAME: self.faultString = elem.text.strip() elif localName == SOAPFault.FAULT_ACTOR_ELEMENT_LOCAL_NAME: self.faultActor = elem.text.strip() elif localName == SOAPFault.DETAIL_ELEMENT_LOCAL_NAME: # Make no assumptions about the content, simply assing the # element to the detail attribute self.detail = elem else: faultCode = str(QName(SOAPFault.DEFAULT_ELEMENT_NS, tag=SOAPFault.CLIENT_FAULT_CODE, prefix=SOAPFault.DEFAULT_ELEMENT_NS_PREFIX)) raise SOAPFaultException('Invalid child element in SOAP ' 'Fault "%s" for stream %r' % (localName, source), faultCode)
def parse(self, source): """This method ONLY parses a SOAPFault IF one is found""" if ElementTree.iselement(source): self.elem = source else: self.elem = self._parse(source) for elem in self.elem: localName = QName.getLocalPart(elem.tag) if localName == SOAPFault.DEFAULT_ELEMENT_LOCAL_NAME: if self.fault is None: self.fault = SOAPFault() self.fault.parse(elem) # Only one SOAPFault element is expected break
def parse(self, source): """Parse SOAP Envelope""" self.elem = self._parse(source) for elem in self.elem: localName = QName.getLocalPart(elem.tag) if localName == SOAPHeader.DEFAULT_ELEMENT_LOCAL_NAME: self.header.elem = elem elif localName == SOAPBody.DEFAULT_ELEMENT_LOCAL_NAME: self.body.parse(elem) else: faultCode = str(QName(SOAPEnvelopeBase.DEFAULT_ELEMENT_NS, tag=SOAPFault.CLIENT_FAULT_CODE, prefix=SOAPFault.DEFAULT_ELEMENT_NS_PREFIX)) raise SOAPFaultException('Invalid child element in SOAP ' 'Envelope "%s" for stream %r' % (localName, source), faultCode)