Je debute sur la gestion de base par XML, j'ai trouve sur php.net ce sccript qui permet de récuperer les données d'un fichier XML dans un objet:
Voici mon fichier XML qui sert de test:
Code : Tout sélectionner
<?xml version="1.0"?>
<biens>
<bien>
<name>test1</name>
<symbol>ala</symbol>
<code>A</code>
<type>hydrophobic</type>
</bien>
<bien>
<name>test2</name>
<symbol>lys</symbol>
<code>K</code>
<type>charged</type>
</bien>
</biens>
Code : Tout sélectionner
class BienList {
var $name; // nom aa
var $symbol; // symbole à trois lettres
var $code; // code à une lettre
var $type; // hydrophobique, chargé ou neutre
function BienList ($aa) {
foreach ($aa as $k=>$v)
$this->$k = $aa[$k];
}
}
function readDatabase($filename) {
// lit la base de données xml des acides aminés
$data = implode("",file($filename));
$parser = xml_parser_create();
xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0);
xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);
xml_parse_into_struct($parser,$data,$values,$tags);
xml_parser_free($parser);
// boucle à travers les structures
foreach ($tags as $key=>$val) {
if ($key == "bien") {
$molranges = $val;
// each contiguous pair of array entries are the
// lower and upper range for each molecule definition
for ($i=0; $i < count($molranges); $i+=2) {
$offset = $molranges[$i] + 1;
$len = $molranges[$i + 1] - $offset;
$tdb[] = parseMol(array_slice($values, $offset, $len));
}
} else {
continue;
}
}
return $tdb;
}
function parseMol($mvalues) {
for ($i=0; $i < count($mvalues); $i++)
$mol[$mvalues[$i]["tag"]] = $mvalues[$i]["value"];
return new BienList($mol);
}
$db = readDatabase("moldb.xml");
echo "** Base des biens :\n";
print_r($db);
Edit:
Pas de réponse
Pour plus d'info, il s'agit d'un moteur de recherche sur base XML je sais se n'ai pas la meilleur solution en terme de rapidité mais la base reste petite et je n'ai pas le choix.
J'ai entendu parlé de simplexml est-ce mieu que ma 1er solution???