public function &appendNode(DOMNode &$a_tag) { switch ($this->m_node->nodeType) { case XML_DOCUMENT_NODE: $node = $this->m_node->isSameNode($a_tag->ownerDocument) ? $a_tag : $this->m_node->importNode($a_tag, true); $this->m_node->appendChild($a_tag); return $this; case XML_ELEMENT_NODE: $node = $this->m_node->ownerDocument->isSameNode($a_tag->ownerDocument) ? $a_tag : $this->m_node->ownerDocument->importNode($a_tag, true); $this->m_node->appendChild($node); return $this; } return $this; }
/** * @param \DOMNode $sourceNode * @param \DOMNode $destinationNode * @return \DOMNode|null */ public static function appendTo(\DOMNode $sourceNode, \DOMNode $destinationNode) { if ($destinationNode instanceof \DOMDocument) { if ($sourceNode->ownerDocument === $destinationNode) { return $destinationNode->appendChild($sourceNode); } $ret = $destinationNode->appendChild($destinationNode->importNode($sourceNode, true)); if ($sourceNode->parentNode !== null) { $sourceNode->parentNode->removeChild($sourceNode); } return $ret; } if ($sourceNode->ownerDocument === $destinationNode->ownerDocument) { return $destinationNode->appendChild($sourceNode); } $ret = $destinationNode->appendChild($destinationNode->ownerDocument->importNode($sourceNode, true)); if ($sourceNode->parentNode !== null) { $sourceNode->parentNode->removeChild($sourceNode); } return $ret; }