/**
* Parses the entire file and returns a webspace object.
*
* @param $file
*
* @return Webspace
*/
protected function parseXml($file)
{
$this->xpath = new \DOMXPath($this->tryLoad($file));
$this->xpath->registerNamespace('x', 'http://schemas.sulu.io/webspace/webspace');
// set simple webspace properties
$this->webspace = new Webspace();
$this->webspace->setName($this->xpath->query('/x:webspace/x:name')->item(0)->nodeValue);
$this->webspace->setKey($this->xpath->query('/x:webspace/x:key')->item(0)->nodeValue);
$this->webspace->setTheme($this->generateTheme());
$this->webspace->setNavigation($this->generateNavigation());
$this->webspace->setResourceLocatorStrategy('tree_leaf_edit');
$this->generateTemplates($this->webspace);
$this->generateDefaultTemplates($this->webspace);
// set security
$this->generateSecurity();
// set localizations on webspaces
$this->generateWebspaceLocalizations();
// set segments on webspaces
$this->generateSegments();
// set portals on webspaces
$this->generatePortals();
// validate the webspace, and throw exceptions if not valid
$this->validate();
return $this->webspace;
}