Dynamic-Mess.com


"The world is a dynamic mess of jiggling things..."

Lire/Ecrire dans un fichier XML avec PHP

Article posté le 12-11-2013 dans la catégorie PHP

Notre cas de figure :

Le fichier xml sur lequel nous travaillons contient des enregistrements de joueurs. Chaque joueurs a 3 attributs : une position, une bombe, et la position de cette bombe.

Nous utiliserons la blibliothèque SimpleXML

1- Lire le fichier

Lire le fichier se fait en deux étapes : le définir (recommandé en cas de fichier qui n'est pas tout le temps le même), puis l'ouvrir avec simplexml.

Soit le fichier XML suivant :

<?xml version="1.0" encoding="UTF-8"?>
<Meta>
   <Page TestUri="books/">
    <Title>List all books</Title>
    <Description>The whole list of my books collection</Description>
    <Keywords>books, list, collection</Keywords>
    <Index>1</Index>
  </Page>
  <Page TestUri="books/add/">
    <Title>Add a book</Title>
    <Description>The whole list of my books collection</Description>
    <Keywords>books, list, collection</Keywords>
    <Index>1</Index>
  </Page>
</Meta>

Et voici une classe qui permet d'accéder (pour l'exemple), au titre de deux éléments précis (les deux premiers en l'occurence), mais aussi de lister tous les titres :

<?php
class Modules_readMetas
{
    private $file;
    public function __construct($Uri) 
    {
        $this->file = __DIR__."/../Meta/Meta.xml";
        $xml = @simplexml_load_file($this->file);
        
        if(!$xml)
        {
            echo "Erreur";
        }
        else
        {
            $xml = @simplexml_load_file($this->file);
 
            echo $xml->Page[0]->Title."<br/>";
            echo $xml->Page[1]->Title."<br/>";
            
            $children = $xml->children();
            foreach ($children as $value) 
            {
                echo $value->Title."<br/>";
            }
        }
    }
}
?>

2- Ecrire dans le fichier

$xml=simplexml_load_file($fichier);
$xml->joueur[0]->position = $_GET['Pos']; // Inscription des propriétés
$xml->joueur[0]->bombe = $_GET['IsBomb'];
$xml->joueur[0]->bombelocation = $_GET['CoordBomb'];
$xml->asXML($fichier);

Voilà pour les opérations basiques. 


Cet article vous a plu? Découvrez d'autres articles


Tweet
comments powered by Disqus