Ordenar nodos XML con PHP

Tengo una cadena serializada que viene con POST:

$imgdata = $_POST['imgdata']; // li[]=2&li[]=3&li[]=1&li[]=4 

En este ejemplo, 001 se reordena después de 003 ¿Cómo puedo actualizar mi archivo XML con este nuevo pedido? Creo que necesito simpleXML o xpath. Aquí están mis pensamientos:

 // 1. load xml string $xml = simplexml_load_file('test.xml'); /*          */ // 2. sort nodes // $new_xml_string = "......"; // 3. write out new XML file $handle = fopen("images.xml", 'w'); fwrite($handle, $new_xml_string); fclose($handle); 

Cambiar el orden de los nodos equivale a la transformación de XML. Puedes hacer algo como esto,

            EOT; $xml = new DOMDocument; $xml->loadXML($oldXml); $xsl = new DOMDocument; $xsl->loadXML($temp); $proc = new XSLTProcessor; $proc->importStyleSheet($xsl); // attach the xsl rules $newXml = $proc->transformToXML($xml); 

XSLT es una forma correcta pero puede usar XPath + array. Primer paso: seleccione las teclas (atributos o cualquier otra cosa), colóquelas en una matriz y luego ordénelas con métodos PHP estándar. Segundo paso: use la matriz como un mapa clave para crear un nuevo XML.