Bonjour,
J'ai besoin de votre aide, je n'y connait rien dans la manipulation d'un fichier xml.
Et j'ai eu la surprise d'avoir à le faire pour une agence immobiliere (cela n'était pas dans le cahier des charges).

Je dois récupérer un ensemble d'informations via un flux xml.
La balise LISTEPA est la racine du document, elle a pour nœud fils tous les biens
Ce fichier XML ressemble à ça :

<LISTEPA>
    <BIEN>
        <INFO_GENERALES></INFO_GENERALES>
        <AGENCE></AGENCE>
        <VENTE></VENTE>
        <MAISON></MAISON>
        <LOCALISATION></LOCALISATION>
        <DEFISCALISATION></DEFISCALISATION>
        <INTITULE></INTITULE>
        <COMMENTAIRES></COMMENTAIRES>
        <ALUR></ALUR>
        <VIAGER></VIAGER>
        <IMAGES></IMAGES>
        <PIECES></PIECES
    </BIEN>
    </BIEN><BIEN>
    </BIEN><BIEN>
 </LISTEPA>

Dans mes biens j'ai une balise <MAISON></MAISON>, mais elle peux changer en <APPARTEMENT></APPARTEMENT> par exemple.
en gros la logique serait :
Créer un tableau categorie
Pour tous les biens
récupere le nom de 4ème balise (<MAISON> </MAISON>)
Si l'entrée n'existe pas dans le tableau catégorie, tu l'ajoute.

Une ame charitable pour m'aiguiller svp ?

3 réponses


Panterofys
Auteur
Réponse acceptée

Je pense avoir trouver une methode si jamais quelqu'un à mieux ...

$file = file_get_contents('fichier.xml');
      $xml = new \SimpleXMLElement($file);
        $types = [];
        foreach ($xml->children() as $child)
        {
            $arrayChild =json_decode(json_encode($child),1); //transforme $child en tableau
            $typeName = array_slice($arrayChild, 3, 1); // recupere les types
            if (!in_array(key($typeName),$types)) { // si le type n'est pas dans le tableau
                $types[] = key($typeName); //ajoute le type au tableau
            }
        }

Salut à toi !

J'ai déjà manipuler plusieurs fichiers XML. En fonction de tes besoins tu as plusieurs façons de faire.
Pour ma part, je ferais presque comme toi :

$fichier = 'fichier.xml';
$xml = simplexml_load_file($fichier);
$see_html = null;

foreach($xml as $bien){
    $see_html .= $bien->INFO_GENERALES . '<br>';    
    $see_html .= $bien->AGENCE . '<br>';    
    // ...
    if(isset($bien->VIAGER)){
        // ...
    }
    // ...
}
<html>
    <body>
        <?= $see_html ?>
    </body>
</html>

Ensuite à toi de voir ce que tu souhaites afficher ou non.

Quand j'ai manipulé un fichier XML c'était pour afficher différents produits via un flux ou un fichier XML en local pour présenter des produits à des clients. Du coup je lisais ma structure et je construisais la vue HTML pas à pas. J'avais un dossier image, des noms d'images, différentes tailles, des paramètres dans les balises XML etc.

Hello !
Ah oui merci c'est une solution aussi , merci d'avoir répondu, je compatis c'est vraiment chiant de se parser un xml ...