code: protected function analyzeWithErrCodeCategoryMsgNodeName(SendResult $response, $nodeErr, $nodeCat, $nodeMsg)
      {
          $analyzeResponse = new Result($response);
  
          $domDoc = $this->loadDomDocument($response->responseXml);
  
          $errorCodeNode = $domDoc->getElementsByTagName($nodeErr)->item(0);
  
          if (!is_null($errorCodeNode)) {
              $errorCatNode = $domDoc->getElementsByTagName($nodeCat)->item(0);
              if ($errorCatNode instanceof \DOMNode) {
                  $analyzeResponse->status = $this->makeStatusFromErrorQualifier($errorCatNode->nodeValue);
              } else {
                  $analyzeResponse->status = Result::STATUS_ERROR;
              }
  
              $errorCode = $errorCodeNode->nodeValue;
              $errorTextNodeList = $domDoc->getElementsByTagName($nodeMsg);
  
              $analyzeResponse->messages[] = new Result\NotOk(
                  $errorCode,
                  $this->makeMessageFromMessagesNodeList($errorTextNodeList)
              );
          }
  
          return $analyzeResponse;
      }
docs: Analyze response by looking for error, category and message in nodes specified by name
  
  @param SendResult $response
  @param string $nodeErr Node name of the node containing the error code (first node is used)
  @param string $nodeCat Node name of the node containing the error category (first node is used)
  @param string $nodeMsg Node name of the node containing the error messages (all nodes are used)
  @return Result