A voir également:
- Parser un fichier XML avec DOM et XPATH en PHP
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Ouvrir un fichier .bin - Guide
- Fichier host - Guide
1 réponse
Bonjour a tous,
je pense que ce code ferra l'affaire :
je pense que ce code ferra l'affaire :
<?php // Tableau qui va acontenir les missisons $missions = array(); // Création d'une représentation du document $dom = new DOMDocument('1.0', 'UTF-8'); // Charger les balises XML depuis le fichier 'missions.xml' $dom->Load('missions.xml'); // Création d'un nouvel objet DOMXPath $xpath = new DOMXPath($dom); // Récupérer le mois $mois = $xpath->evaluate('/missions')->item(0)->getAttribute('mois'); if(isset($_GET['affichage']) && $_GET['affichage'] == 'chauffeur' && isset($_GET['chauffeur'])) { // Récupérer la liste des missions spécifique à un chauffeur $query = '/missions/mission'.'[chauffeur/@nom=\''.$_GET['chauffeur'].'\']'; } else { // Récupérer la liste de toutes les missions $query = '/missions/mission'; } // Exécution de la requête XPath $nodes = $xpath->query($query); foreach ($nodes as $i => $mission) { // Indice utilisé pour les lieux $j = 0; // Distance total de chaque itineraire pour chaque mission $missions[$i]['distance_total'] = 0 ; // ID de la mission courante $missions[$i]['id'] = $mission->getAttribute('id'); foreach ($mission->getElementsByTagName('*') as $key => $value) { if($value->nodeName == 'chauffeur') { // Si le node courant est 'chauffeur' on prend l'attribut nom $missions[$i]['chauffeur'] = $value->getAttribute('nom'); } else if($value->nodeName == 'lieu') { /** * Si le node courant est 'lieu' on crée un tableau indxé qui contient * l'ensemble des valeurs concernant le lieu courant **/ $missions[$i]['distance_total'] += $value->getAttribute('distance'); $missions[$i]['itineraire'][$j]['lieu']['distance'] = $value->getAttribute('distance'); $missions[$i]['itineraire'][$j]['lieu']['typeLieu'] = $value->getAttribute('typeLieu'); $missions[$i]['itineraire'][$j]['lieu']['nom'] = $value->nodeValue; $j ++; } else if($value->nodeName != 'itineraire') { // Sinon on prend la valeur textuelle du node $missions[$i][$value->nodeName] = $value->nodeValue; } } } ?>