rules = array(); $xml = simplexml_load_string($strXml); if (!isset($xml->Rule)) return; $this->rules = array(); foreach ($xml->Rule as $rule) { $id = strval($rule->ID); $prefix = strval($rule->Prefix); $status = strval($rule->Status); $actions = array(); foreach ($rule as $key => $value) { if ($key === 'ID' || $key === 'Prefix' || $key === 'Status') continue; $action = $key; $timeSpec = null; $timeValue = null; foreach ($value as $timeSpecKey => $timeValueValue) { $timeSpec = $timeSpecKey; $timeValue = strval($timeValueValue); } $actions[] = new LifecycleAction($action, $timeSpec, $timeValue); } $this->rules[] = new LifecycleRule($id, $prefix, $status, $actions); } return; } /** * Serialize the object to xml * * @return string */ public function serializeToXml() { $xml = new \SimpleXMLElement(''); foreach ($this->rules as $rule) { $xmlRule = $xml->addChild('Rule'); $rule->appendToXml($xmlRule); } return $xml->asXML(); } /** * * Add a LifecycleRule * * @param LifecycleRule $lifecycleRule * @throws OssException */ public function addRule($lifecycleRule) { if (!isset($lifecycleRule)) { throw new OssException("lifecycleRule is null"); } $this->rules[] = $lifecycleRule; } /** * Serialize the object into xml string. * * @return string */ public function __toString() { return $this->serializeToXml(); } /** * Get all lifecycle rules. * * @return LifecycleRule[] */ public function getRules() { return $this->rules; } /** * @var LifecycleRule[] */ private $rules; }