/** * Return a clone of the document>. * * @return SuiteDocument */ public function duplicate() { $document = new self(); $node = $document->importNode($this->firstChild, true); $document->appendChild($node); return $document; }
/** * * @return XMLDom */ public static function adapt(\DOMDocument $dom) { $new = new self(); foreach ($dom->childNodes as $child) { $n = $new->importNode($child, true); if ($n) { $new->appendChild($n); } } return $new; }
/** * @param array $option * @param integer $currentXml * @return array */ private function internalParse(array &$option, $currentXml = 0) { if ($currentXml == 0) { if (!isset($option[0])) { return array(); } $currentXmlArray = $option[0]; $this->setName(isset($currentXmlArray['tag']) ? $currentXmlArray['tag'] : 'noname'); $this->setValue(isset($currentXmlArray['value']) ? $currentXmlArray['value'] : ''); $this->setAttributes(isset($currentXmlArray['attributes']) ? $currentXmlArray['attributes'] : array()); $this->setRoot(true); } $xmlArray = array(); $currentXml++; $deep = $currentXml; while ($deep < count($option)) { $currentXmlArray = $option[$deep]; if ($currentXmlArray['type'] == 'close') { return array($xmlArray, $deep); } $xmlObject = new self(''); $xmlObject->setName(isset($currentXmlArray['tag']) ? $currentXmlArray['tag'] : 'noname'); $xmlObject->setValue(isset($currentXmlArray['value']) ? $currentXmlArray['value'] : ''); $xmlObject->setAttributes(isset($currentXmlArray['attributes']) ? $currentXmlArray['attributes'] : array()); if ($currentXmlArray['type'] == 'open') { $result = $this->internalParse($option, $deep++); if (!empty($result)) { list($children, $deep) = $result; $xmlObject->appendChild($children); } } $xmlArray[$xmlObject->getName()][] = $xmlObject; $deep++; } return array($xmlArray, $deep); }
public function duplicate() { $dom = new self(); $firstChild = $dom->importNode($this->firstChild, true); $dom->appendChild($firstChild); return $dom; }