def fromXML(cls, elem): if not ElementTree.iselement(elem): raise TypeError("Expecting %r input type for parsing; got %r" % (ElementTree.Element, elem)) if QName.getLocalPart(elem.tag) != cls.DEFAULT_ELEMENT_LOCAL_NAME: raise XMLTypeParseError("No \"%s\" element found" % cls.DEFAULT_ELEMENT_LOCAL_NAME) authzDecisionStatement = XACMLAuthzDecisionStatement() for childElem in elem: localName = QName.getLocalPart(childElem.tag) if localName == Response.ELEMENT_LOCAL_NAME: # Create XACML context request from Response element. authzDecisionStatement.xacmlContextResponse = \ ResponseElementTree.fromXML(childElem) elif localName == Request.ELEMENT_LOCAL_NAME: # Create XACML context request from Request element. authzDecisionStatement.xacmlContextRequest = \ RequestElementTree.fromXML(childElem) else: raise XMLTypeParseError("Unrecognised XACMLAuthzDecisionQuery child " "element \"%s\"" % localName) return authzDecisionStatement