Quick easy way to turn objectified SimpleXMLElement data into an array.
<?php
function get_xml_from_some_source(){
//blah blah blah build cUrl
$data = @curl_exec($ch);
$newdata = new SimpleXMLElement($data);
$new = xml2array_parse($newdata);
}
function xml2array_parse($xml){
foreach ($xml->children() as $parent => $child){
$return["$parent"] = xml2array_parse($child)?xml2array_parse($child):"$child";
}
return $return;
}
?>
My first post, be nice. ;-)
SimpleXMLElement::children
(PHP 5 >= 5.0.1)
SimpleXMLElement::children — Finds children of given node
Description
SimpleXMLElement
SimpleXMLElement children
([ string $ns
[, bool $is_prefix
]] )
This method finds the children of the element of which it is a member. The result follows normal iteration rules.
Note: SimpleXML has made a rule of adding iterative properties to most methods. They cannot be viewed using var_dump() or anything else which can examine objects.
Parameters
- ns
-
- is_prefix
-
Default to FALSE
Return Values
Changelog
| Version | Description |
|---|---|
| 5.2.0 | The optional parameter is_prefix was added. |
Examples
Example #1 Traversing a children() pseudo-array
<?php
$xml = new SimpleXMLElement(
'<person>
<child role="son">
<child role="daughter"/>
</child>
<child role="daughter">
<child role="son">
<child role="son"/>
</child>
</child>
</person>');
foreach ($xml->children() as $second_gen) {
echo ' The person begot a ' . $second_gen['role'];
foreach ($second_gen->children() as $third_gen) {
echo ' who begot a ' . $third_gen['role'] . ';';
foreach ($third_gen->children() as $fourth_gen) {
echo ' and that ' . $third_gen['role'] .
' begot a ' . $fourth_gen['role'];
}
}
}
?>
The above example will output:
The person begot a son who begot a daughter; The person begot a daughter who begot a son; and that son begot a son
SimpleXMLElement::children
hoseinnj at google's great mail dot com
19-Mar-2009 08:25
19-Mar-2009 08:25
