2013-04-01 3 views
2

Je veux savoir comment je peux trier des éléments XML simples avec PHP. Oui, j'ai trouvé des sujets qui traitent du même sujet - mais je n'ai pas pu résoudre mon problème.Comment faire pour trier SimpleXMLElement sur PHP

Le XML ce que je veux tri est:

<?xml version="1.0" encoding="UTF-8"?> 
<cursos> 
    <curso> 
    <id>DRW</id> 
    <nome>Design Responsivo</nome> 
    <categoria>Web</categoria> 
    <inicio>30/02/2013</inicio> 
    <periodo>Sábados de manhã</periodo> 
    <cargaHoraria>40h</cargaHoraria> 
    <objetivos></objetivos> 
    </curso> 
    <curso> 
    <id>MSQ</id> 
    <nome>MySQL</nome> 
    <categoria>Banco de dados</categoria> 
    <inicio>30/03/2013</inicio> 
    <periodo>Sábados de manhã</periodo> 
    <cargaHoraria>20h</cargaHoraria> 
    <objetivos></objetivos> 
    </curso> 
    <curso> 
    <id>MBY</id> 
    <nome>Iniciação à informática</nome> 
    <categoria>Iniciantes e Usuários Av.</categoria> 
    <inicio>30/04/2013</inicio> 
    <periodo>Matutino 1</periodo> 
    <cargaHoraria>80h</cargaHoraria> 
    <objetivos></objetivos> 
    </curso> 
    <curso> 
    <id>FCS</id> 
    <nome>Desenvolvendo em C#</nome> 
    <categoria>Desenvolvimento</categoria> 
    <inicio>14/04/2013</inicio> 
    <periodo>Domingo</periodo> 
    <cargaHoraria>60h</cargaHoraria> 
    <objetivos></objetivos> 
    </curso> 
    <curso> 
    <id>MAY</id> 
    <nome>Modelagem em Maya</nome> 
    <categoria>Artes gráficas</categoria> 
    <inicio>13/04/2013</inicio> 
    <periodo>Sábado 08h:00-13h:00</periodo> 
    <cargaHoraria>60h</cargaHoraria> 
    <objetivos></objetivos> 
    </curso> 
</cursos> 

Je trouve this et this solution, mais la logique d'appliquer ce tableau sur XML multidimensionnel est pas clairement pour moi. Est-ce que quelqu'un peut m'aider?

Merci d'avance.

+0

S'il vous plaît afficher le code que vous avez essayé d'utiliser et les erreurs/problèmes que vous avez avec elle. – Tomalak

Répondre

1

Il n'y a pas vraiment de moyen facile de trier avec SimpleXML; vous devez créer un tableau avec les éléments, les trier puis reconstruire le XML:

$d = simplexml_load_string($xml); 
// turn into array 
$e = array(); 
foreach ($d->curso as $curso) { 
     $e[] = $curso; 
} 
// sort the array 
usort($e, function($a, $b) { 
     return $a->cargaHoraria - $b->cargaHoraria; 
}); 
// put it back together 
echo '<cursos>'; 
foreach ($e as $node) { 
     echo $node->saveXML(); 
} 
echo '</cursos>'; 
+0

+1 Bien que je recommande de ne pas le remettre ensemble comme une ficelle. C'est mieux: http://stackoverflow.com/a/3361590/18771 – Tomalak

Questions connexes