private function parseVxpdoSettings(\DOMNode $vxpdo) {

		if(is_null($this->vxpdo)) {
			$this->vxpdo = [];
		}

		foreach($vxpdo->getElementsByTagName('datasource') as $datasource) {

			$name = $datasource->getAttribute('name') ?: 'default';

			if(array_key_exists($name,  $this->vxpdo)) {
				throw new ConfigException(sprintf("Datasource '%s' declared twice.", $name));
			}

			$config = [
				'driver' => null,
				'dsn' => null,
				'host' => null,
				'port' => null,
				'user' => null,
				'password' => null,
				'dbname' => null,
			];

			foreach($datasource->childNodes as $node) {

				if($node->nodeType !== XML_ELEMENT_NODE) {
					continue;
				}

				if(array_key_exists($node->nodeName, $config)) {
					$config[$node->nodeName] = trim($node->nodeValue);
				}
			}

			$this->vxpdo[$name] = (object) $config;

		}

	}