php tiene funciones nativas para esto que ahora mismo no recuerdo, pero puedes hacer algo a manuela como esto:
Código PHP:
Ver original<?php
function getBloquesXML($xml, $bloque)
{
$ini = true;
while($ini !== false)
{
$ini = strpos($xml, '<'.$bloque.'>'); $fin = strpos($xml, '</'.$bloque.'>'); $tmp_bloques[] = $tmp;
}
return $tmp_bloques;
}
function ordenarXML($xml, $seccion, $bloque, $propiedad, $forma)
{
$ini = strpos($xml, '<'.$seccion.'>'); $fin = strpos($xml, '</'.$seccion.'>');
$xmlOrdenado = substr($xml, 0, ($ini+strlen('<'.$seccion.'>'))); $conXML[0] = getBloquesXML($xml, $seccion);
$conXML[1] = substr($xml, $fin);
$bloques = getBloquesXML($conXML[0][0], $bloque);
foreach($bloques as $indice => $unBloque)
{
$tmp_arr_val[] = getBloquesXML($unBloque, $propiedad)[0];
$tmp_arr_ind[] = $indice;
}
$ini = 0;
$fin = 0;
if($forma == 'DESC')
{
for($ind=0,$fin=count($tmp_arr_ind); $ind < $fin; $ind++) $xmlOrdenado .= $bloques[$tmp_arr_ind[$ind]];
} else {
for($ind=count($tmp_arr_ind)-1, $fin=0; $ind>=$fin; $ind--) $xmlOrdenado .= $bloques[$tmp_arr_ind[$ind]];
}
$xmlOrdenado .= $conXML[1];
return $xmlOrdenado;
}
// La llamarias asi:
echo(ordenarXML($xml, 'usuarios', 'id' ,'nombre', 'ASC'));