protected function loadXML(&$data)
    {
        $this->validateParameters();
        
        if (!file_exists($this->save_path) && empty($this->config_file_must_exist)) {
            return true;
        }
        
        if (!file_exists($this->save_path) || !is_readable($this->save_path)) {
            throw new \Exception(sprintf("The config file '%s' cannot be read!", $this->save_path));
        }
        
        $xml = file_get_contents($this->save_path);
        if ($xml === false) {
            throw new \Exception(sprintf("The config file '%s' cannot be read!", $this->save_path));
        }
        
        if (!empty($this->save_encrypted)) {
            $xml = aes_256_decrypt($xml, $this->salt_key);
        }
        
        $xmldoc = new \DOMDocument();
        
        if (!@$xmldoc->loadXML($xml)) {
            throw new \Exception(sprintf("The config file '%s' is invalid!", $this->save_path));
        }
        
        dom_to_array($xmldoc->documentElement, $data);
        
        return true;
    }