Example #1
0
 /**
  * setElementValue
  *
  * @param DOMNode $DOMNode
  * @param mixed $value
  */
 protected function setElementValue($DOMNode, $value = null)
 {
     switch (true) {
         case $this->isSimpleXMLElement($value):
             $node = dom_import_simplexml($value);
             $node = $this->dom->importNode($node, true);
             $DOMNode->appendChild($node);
             break;
         case $value instanceof \DOMDocument:
             $DOMNode->appendDomElement($value->firstChild);
             break;
         case $value instanceof \DOMNode:
             $this->dom->appendDomElement($value, $DOMNode);
             break;
         case is_array($value) || $value instanceof \Traversable:
             $this->buildXML($DOMNode, $value);
             return true;
         case is_numeric($value):
             if (is_string($value)) {
                 return $this->createTextNodeWithTypeAttribute($DOMNode, (string) $value, 'string');
             }
             return $this->createText($DOMNode, (string) $value);
         case is_bool($value):
             return $this->createText($DOMNode, $value ? 'yes' : 'no');
         case is_string($value):
             if (preg_match('/(<|>|&)/i', $value)) {
                 return $this->createCDATASection($DOMNode, $value);
             }
             return $this->createText($DOMNode, $value);
         default:
             return $value;
     }
 }