/** * @param DOMNode $dom_node * @param $object */ private function add_xsi_type(DOMNode $dom_node, $object) { $xsi_type_name = $object['__type']; if (isset($xsi_type_name) && $xsi_type_name != '') { $prefix = $dom_node->lookupPrefix($object['__ns']); $dom_node->setAttribute('xsi:type', (isset($prefix) ? $prefix . ':' : '') . $xsi_type_name); } }
/** * Adds the xsi:type to the DOMNode generated from the corresponding object. * @param DOMNode $domNode the DOM node corresponding to the object * @param $object the object used to determine the xsi:type * @access private */ private function AddXsiType(DOMNode $domNode, $object) { $xsiType = $domNode->getAttributeNS(self::$XSI_NAMESPACE, 'xsi:type'); if (method_exists($object, 'getXsiTypeName') && method_exists($object, 'getNamespace') && empty($xsiType)) { $xsiTypeName = $object->getXsiTypeName(); if (isset($xsiTypeName) && $xsiTypeName != '') { $prefix = $domNode->lookupPrefix($object->getNamespace()); $domNode->setAttributeNS(self::$XSI_NAMESPACE, 'xsi:type', (isset($prefix) ? $prefix . ':' : '') . $xsiTypeName); } } }
/** * Get the namespace of the supplied node, and add it to the list of known namespaces for this document * @param \DOMNode $node */ protected function collateNamespaces(\DOMNode $node) { if ($this->config['useNamespaces'] && $node->namespaceURI && !array_key_exists($node->namespaceURI, $this->namespaces)) { $this->namespaces[$node->namespaceURI] = $node->lookupPrefix($node->namespaceURI); } }