- simplexml_load_string: documentation ( source)
- json_encode: documentation ( source)
<?php
$s = '<?xml version="1.0" encoding="utf-8" standalone="yes" ?>'.
'<request><body test2="321" test3="987">'.
'<rows><my-row test4="564">'.
'<types>'.
'<custom>this is the example of the text</custom>'.
'<Generic arch="simple">this is the example of the text</Generic>'.
'<bold/><italic/><underlined/>'.
'</types>'.
'</my-row><my-row test5="565"/><test hidden="false" ready="true"/></rows>'.
'</body></request>';
$xml = simplexml_load_string($s);
foreach($xml->children() as $state)
{
$states[]= array('state' => (string)$state->name);
}
echo json_encode($states);
/*function f($xml, $stack = null) {
print_r(array(
'call',
$stack
));
$stack = count($stack) ? $stack : array();
foreach ($xml as $key => $value) {
$stack[$key] = null;
if (count($value->attributes()))
$stack[$key]['attributes'] = (array)$value->attributes();
if (is_string($value))
$stack[$key]['content'] = (string)$value;
/*print_r(array(
'key' => $key,
'hasChildren' => (bool)$xml->hasChildren(),
'attributes' => (array)$value->attributes(),
'stack' => $s,
));*
print_r(array(
'call',
$value,
));
if (get_class($value) == 'SimpleXMLIterator' && $xml->hasChildren())
f($xml->getChildren(), $stack);
}
return $stack;
}
print_r(f(new SimpleXMLIterator($s)));*/