/** * 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; }