Salve, come da titolo devo ordinare (con punteggio decrescente) i nodi di una classifica di squadre salvata in un foglio xml del tipo:
Apro il documento e richiamo la funzione ordina(documento) creata da me con:codice:<root> <squadra> <nome>Sq1</squadra> <punti>10</punti> </squadra> <squadra> <nome>Sq2</squadra> <punti>16</punti> </squadra> ...ecc </root>
Quindi quello che mi aspetto e' che $sq_ord sia una nodeList di squadre ordinate secondo il criterio detto prima. La funzione ordina è la seguente:Codice PHP:$doc = new DOMDocument('1.0', 'utf-8');
$doc->load("classif.xml");
$sq_ord = ordina($doc);
Cosa sbaglio??Codice PHP:function ordina($doc)
{
$sq = $doc->getElementsByTagName("squadra");
$root = $doc->documentElement;
$tmp = NULL;
$top = $sq->length;
while ($top > 1)
{
for ($i = 0; $i < $top-1; $i++)
{
if (($sq->item($i)->getElementsByTagName("punti")->item(0)->nodeValue) < ($sq->item($i+1)->getElementsByTagName("punti")->item(0)->nodeValue))
{
$tmp = $sq->item($i)->cloneNode(true);
$root->replaceChild($sq->item($i), $sq->item($i+1));
$root->replaceChild($sq->item($i+1), $tmp);
}
}
$top--;
}
return $sq;
}
L'errore che ottengo è il seguente:
"Fatal error: Uncaught exception 'DOMException' with message 'Not Found Error' in D:\classifiche.php:99 Stack trace: #0 D:\classifiche.php(99): DOMNode->replaceChild(Object(DOMElement), Object(DOMElement)) #1 D:\classifiche.php(156): ordina(Object(DOMDocument)) #2 {main} thrown in D:\classifiche.php on line 99"
La riga 99 è: $root->replaceChild($sq->item($i+1), $tmp); nella funzione ordina.
Grazie mille.

Rispondi quotando