protected function getFormData()
    {
        $data = array();
        $inputTagNames = array('input', 'textarea', 'select');
        $skipNames = array('ext', 'form');

        /** @var DOMElement $element */
        $element = $this->xml->getElementsByTagName('form')->item(0);
        $elements = $element->getElementsByTagName('*');

        for ($i = 0; $i < $elements->length; $i++)
        {
            $element = $elements->item($i);

            $isElement = $element->nodeType == XML_ELEMENT_NODE;
            $isInputTag = $isElement && in_array($element->nodeName, $inputTagNames);

            if ($isInputTag)
            {
                $name = $element->getAttribute('name');
                if (in_array($name, $skipNames))
                {
                    continue;
                }
                if ($name)
                {
                    if ($element->getAttribute('type') == 'file')
                    {
                        $data[$name]['file'] = $_FILES[$name];
                    }
                    else
                    {
                        $data[$name]['data'] = arg($name);
                    }
                    $data[$name]['label'] = $this->getLabelAttr($element);
                    if (!$data[$name]['label'])
                    {
                        $data[$name]['label'] = $name;
                    }

                    switch ($element->nodeName)
                    {
                        case 'input':
                            switch ($element->getAttribute('type'))
                            {
                                case 'checkbox':
                                    $data[$name]['data'] = $data[$name]['data'] ? strYes : strNo;
                                    break;
                            }
                            break;
                    }
                }
            }
        }

        return $data;
    }