private function parseComplexType($type, WebServiceType &$webServiceType = null) { /*DomDocument*/ $nodeType = null; if (is_string($type)) { foreach ($this->types as $node) { if (XmlUtil::cleearNS($node->documentElement->nodeName) == "complexType" && XmlUtil::cleearNS($node->documentElement->getAttribute("name")) == $type) { $nodeType = $node; break; } } $webServiceType = new WebServiceType(); $webServiceType->setName($type); } else { $nodeType = $type; } if ($nodeType == null) { return false; } /*DOMNodeList*/ $elements = $nodeType->documentElement->getElementsByTagName("element"); if ($elements->length == 0) { $this->parseComplexType(XmlUtil::getDOMDocument($nodeType->childNodes->item(0)), $webServiceType); } for ($i = 0; $i < $elements->length; $i++) { $elementName = null; $elementType = null; /*DOMElement*/ $element = XmlUtil::getDOMElement($elements->item($i)); $elementName = XmlUtil::cleearNS($element->getAttribute("name")); if ($element->hasAttribute("maxOccurs") && ($element->getAttribute("maxOccurs") == "unbounded" || $element->getAttribute("maxOccurs") * 1 > 1)) { $elementType = "array"; } else { $elementType = $this->parseComplexType(XmlUtil::cleearNS($element->getAttribute("type"))); if ($elementType == false) { $elementType = XmlUtil::cleearNS($element->getAttribute("type")); } } $webServiceType->setProperty($elementName, $elementType); } return $webServiceType; }