Example #1
0
 /**
  * Gets the DOM element for this value
  * @return DOMElement The element of this value
  */
 public function getXmlElement()
 {
     $dom = new DOMDocument('1.0', 'utf-8');
     $dom->preserveWhiteSpace = false;
     $type = $this->getType();
     $valueElement = $dom->createElement('value');
     $typeElement = $dom->createElement($type);
     if ($type == self::TYPE_ARRAY) {
         $array = $this->getValue();
         $dataElement = $dom->createElement('data');
         foreach ($array as $value) {
             if ($value instanceof Value) {
                 $parameter = $value;
             } else {
                 $parameter = new self($value);
             }
             $parameterElement = $dom->importNode($parameter->getXmlElement(), true);
             $dataElement->appendChild($parameterElement);
         }
         $typeElement->appendChild($dataElement);
     } elseif ($type == self::TYPE_STRUCT) {
         $struct = $this->getValue();
         if ($struct) {
             foreach ($struct as $key => $value) {
                 $memberElement = $dom->createElement('member');
                 $typeElement->appendChild($memberElement);
                 $nameElement = $dom->createElement('name');
                 $nameElement->appendChild($dom->createTextNode($key));
                 $memberElement->appendChild($nameElement);
                 if ($value instanceof Value) {
                     $parameter = $value;
                 } else {
                     $parameter = new self($value);
                 }
                 $parameterElement = $dom->importNode($parameter->getXmlElement(), true);
                 $memberElement->appendChild($parameterElement);
             }
         } else {
             $typeElement = $dom->createElement(self::TYPE_NIL);
         }
     } elseif ($type == self::TYPE_BOOLEAN) {
         $typeElement->appendChild($dom->createTextNode($this->getValue() ? '1' : '0'));
     } elseif ($type !== self::TYPE_NIL) {
         $typeElement->appendChild($dom->createTextNode($this->getValue()));
     }
     $valueElement->appendChild($typeElement);
     $dom->appendChild($valueElement);
     return $valueElement;
 }