class ServicesXMLFormatter in Services 7.3
Hierarchy
- class \ServicesXMLFormatter implements ServicesFormatterInterface
Expanded class hierarchy of ServicesXMLFormatter
3 string references to 'ServicesXMLFormatter'
- rest_server_response_formatters in servers/
rest_server/ rest_server.module - Builds a list of response formatters that are available to the RESTServer.
- ServicesRESTServerTests::getDefaultFactoryArguments in servers/
rest_server/ tests/ ServicesRESTServerTests.test - ServicesRESTServerTests::testRender in servers/
rest_server/ tests/ ServicesRESTServerTests.test - Test for render() method.
File
- servers/
rest_server/ includes/ ServicesFormatter.inc, line 46
View source
class ServicesXMLFormatter implements ServicesFormatterInterface {
public function render($data) {
$doc = new DOMDocument('1.0', 'utf-8');
$root = $doc
->createElement('result');
$doc
->appendChild($root);
$this
->xml_recursive($doc, $root, $data);
return $doc
->saveXML();
}
private function xml_recursive(&$doc, &$parent, $data) {
if (is_object($data)) {
$data = get_object_vars($data);
}
if (is_array($data)) {
$assoc = FALSE || empty($data);
foreach ($data as $key => $value) {
if (is_numeric($key)) {
$key = 'item';
}
else {
if (empty($key)) {
continue;
}
else {
$assoc = TRUE;
$key = preg_replace('/[^A-Za-z0-9_]/', '_', $key);
$key = preg_replace('/^([0-9]+)/', '_$1', $key);
}
}
$element = $doc
->createElement($key);
$parent
->appendChild($element);
$this
->xml_recursive($doc, $element, $value);
}
if (!$assoc) {
$parent
->setAttribute('is_array', 'true');
}
}
elseif ($data !== NULL) {
$parent
->appendChild($doc
->createTextNode($data));
}
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ServicesXMLFormatter:: |
public | function |
Render data to the string. Overrides ServicesFormatterInterface:: |
|
ServicesXMLFormatter:: |
private | function |