/** * 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; }