Пример #1
0
 /**
  * Returns the results for the alias $alias of the result definition
  * $resultDef based on the complete result set $response.
  *
  * @param Object $response
  * @param SimpleXMLElement $resultDef
  * @param string $alias
  */
 private function getResults($response, $resultDef, $alias)
 {
     $path = $this->getPathForAlias($alias, $resultDef);
     if (empty($path) || $path == "//") {
         return array($response);
     }
     $xpathProcessor = new XPathProcessor($response);
     $xpR = $xpathProcessor->evaluateQuery($path);
     for ($i = 0; $i < count($xpR); $i++) {
         $xpR[$i] = str_replace("####CDATAEND####", "]]>", $xpR[$i]);
     }
     return $xpR;
 }
 /**
  * Creates the value for the parameter when calling the web service
  * 
  * @return string : the value for the parameter
  */
 public function createParameterValue()
 {
     $xpathProcessor = new XPathProcessor($this->parameterDefinition);
     $availableSubParameters = $xpathProcessor->evaluateQuery("//subparameter/@name");
     $availableSubParameters = array_flip($availableSubParameters);
     foreach ($availableSubParameters as $key => $value) {
         if (array_key_exists($key, $this->passedSubParameters)) {
             $availableSubParameters[$key] = $this->passedSubParameters[$key];
         } else {
             if (array_key_exists($key, $this->defaultSubParameters)) {
                 $availableSubParameters[$key] = $this->defaultSubParameters[$key];
             } else {
                 if (array_key_exists($key, $this->optionalSubParameters)) {
                     $availableSubParameters[$key] = "";
                 }
             }
         }
     }
     $subPathStartPos = 0;
     foreach ($availableSubParameters as $key => $value) {
         $subPathStartPos = strpos($this->parameterDefinition, "<subparameter", $subPathStartPos);
         $subPathStart = subStr($this->parameterDefinition, 0, $subPathStartPos);
         $subPathEnd = subStr($this->parameterDefinition, strpos($this->parameterDefinition, ">", $subPathStartPos) + 1);
         $this->parameterDefinition = $subPathStart . $value . $subPathEnd;
     }
     $xpathProcessor = new XPathProcessor($this->parameterDefinition);
     $textNodes = $xpathProcessor->evaluateQuery("//parameter/text()");
     $response = "";
     foreach ($textNodes as $textNode) {
         $response .= trim($textNode);
     }
     return $response;
 }