SLIDE 45 SimpleXML: Advanced Editing SimpleXML: Advanced Editing
simplexml/editing.php simplexml/editing.php
$data = array(array('title'=>'Result 1', 'descript'=>'Res1 description'), $data = array(array('title'=>'Result 1', 'descript'=>'Res1 description'), array('title'=>'Result 2', 'descript'=>'description of Res2'), array('title'=>'Result 2', 'descript'=>'description of Res2'), array('title'=>'Result 3', 'descript'=>'This is result 3')); array('title'=>'Result 3', 'descript'=>'This is result 3'));
class webservice extends simpleXMLElement { class webservice extends simpleXMLElement { public function appendElement($name, $value=NULL) { public function appendElement($name, $value=NULL) {
$count = (isset($this->{$name}))?count($this->{$name}):0; $count = (isset($this->{$name}))?count($this->{$name}):0;
if ($count) { if ($count) {
$this->{$name}[$count] = $value; $this->{$name}[$count] = $value;
} else { } else { /* An issue requires first child be created without offset */ /* An issue requires first child be created without offset */
$this->{$name} = $value; $this->{$name} = $value;
} }
return $this->{$name}[$count]; return $this->{$name}[$count];
} } } }
$rest = simplexml_load_string('<results num="0" />', $rest = simplexml_load_string('<results num="0" />', 'webservice' 'webservice'); ); $rest['num'] = count($data); $rest['num'] = count($data); foreach ($data AS $result_item) { foreach ($data AS $result_item) { $result = $rest->appendElement('result'); $result = $rest->appendElement('result'); $result->appendElement('title', $result_item['title']); $result->appendElement('title', $result_item['title']); $result->appendElement('description', $result_item['descript']); $result->appendElement('description', $result_item['descript']); } } print $rest->asXML(); print $rest->asXML();