public static function fromXml($data) { $doc = new DOMDocument(); $parseOk = false; $parseOk = $doc->loadXML($data); if (!$parseOk) { throw new EsuException('Failed to parse Policy XML'); } $policy = new Policy(); $root = $doc->firstChild; if ($root->localName != 'policy') { throw new EsuException('Expected root node to be \'policy\'. It was ' . $root->localName); } $policy->loadFromElement($root); return $policy; }