Ejemplo n.º 1
0
 /**
  * Create any MXML element.
  *
  * @param  string  $name
  * @param  array   $attributes
  * @param  string  $cdata
  * @return object  XML_MXML_Element
  * @access public
  * @throws Exception
  */
 public function createElement($name, $attributes = array(), $cdata = null, $replaceEntities = true)
 {
     $name = strtolower($name);
     if (isset($this->_element_aliases[$name])) {
         $alias = $this->_element_aliases[$name];
         $slashpos = strrpos($alias, '/');
         $path = 'XML/MXML/' . substr($alias, 0, $slashpos + 1);
         $classname = substr($alias, $slashpos + 1);
         $classfile = substr($classname, strrpos($classname, '_') + 1);
         $file = $path . $classfile . '.php';
         if (@(include_once $file)) {
             $el = new $classname($attributes, $cdata);
         } else {
             throw new Exception('Element not found.', XML_MXML_Document::ERROR_ELEMENT_NOT_FOUND);
         }
     } else {
         $el = new XML_MXML_Element($attributes, $cdata);
         $el->elementName = $name;
         $el->knownElement = false;
     }
     $el->setDocument($this);
     $el->replaceEntities = $replaceEntities;
     if ($this->_autoValidate) {
         try {
             $result = $el->validate($this->_validateCaseInsensitive, $this->_validateVersion);
         } catch (Exception $e) {
             // rethrow
             throw $e;
         }
     }
     return $el;
 }