public static function load($xmlfile, $prefix) { if (is_file($xmlfile)) { $dom = new DOMDocument(); $dom->load($xmlfile); if ($dom->validate()) { $root = $dom->documentElement; // Preliminary path modifications foreach ($root->getElementsByTagName("include") as $include) { $include->nodeValue = FileUtils::resolveRelativePath(FileUtils::getFileParent($xmlfile), $include->nodeValue); } // Reading attributes $actions = array(); foreach (XMLUtils::getChildrenByName($root, "action") as $child) { $actions[] = AbstractAction::parse($child); } $subsites = array(); foreach (XMLUtils::getChildrenByName($root, "subsite") as $child) { $subsites[] = Subsite::parse($child); } $targets = array(); foreach (XMLUtils::getChildrenByName($root, "target") as $child) { $targets[] = Target::parse($child); } return new Subsite($subsites, $targets, $actions, $prefix); } else { throw new Exception("Document validation failed for '" . $xmlfile . "'"); } } else { throw new Exception("Not a file '" . $xmlfile . "'"); } }