@xmlObjToArr($u, $utiliser_namespace)); } /** * Transforme un objet SimpleXML en tableau PHP * http://www.php.net/manual/pt_BR/book.simplexml.php#108688 * xaviered at gmail dot com 17-May-2012 07:00 * * @param object $obj * @param bool $utiliser_namespace * @return array **/ function xmlObjToArr($obj, $utiliser_namespace = false) { $tableau = array(); // Cette fonction getDocNamespaces() est longue sur de gros xml. On permet donc // de l'activer ou pas suivant le contenu supposé du XML if (is_object($obj)) { if (is_array($utiliser_namespace)) { $namespace = $utiliser_namespace; } else { if ($utiliser_namespace) { $namespace = $obj->getDocNamespaces(true); } $namespace[null] = null; } $name = strtolower((string)$obj->getName()); $text = trim((string)$obj); if (strlen($text) <= 0) { $text = null; } $children = array(); $attributes = array(); // get info for all namespaces foreach ($namespace as $ns => $nsUrl) { // attributes $objAttributes = $obj->attributes($ns, true); foreach ($objAttributes as $attributeName => $attributeValue) { $attribName = strtolower(trim((string)$attributeName)); $attribVal = trim((string)$attributeValue); if (!empty($ns)) { $attribName = $ns . ':' . $attribName; } $attributes[$attribName] = $attribVal; } // children $objChildren = $obj->children($ns, true); foreach ($objChildren as $childName => $child) { $childName = strtolower((string)$childName); if (!empty($ns)) { $childName = $ns . ':' . $childName; } $children[$childName][] = xmlObjToArr($child, $namespace); } } $tableau = array( 'name' => $name, ); if ($text) { $tableau['text'] = $text; } if ($attributes) { $tableau['attributes'] = $attributes; } if ($children) { $tableau['children'] = $children; } } return $tableau; }