xml_parse_into_struct
(PHP 4, PHP 5)
xml_parse_into_struct — Analyse une structure XML
Description
$parser
, string $data
, array &$values
[, array &$index
] )
Cette fonction analyse la chaîne
XML data et le place dans deux tableaux :
le premier index contient des pointeurs
sur la position des valeurs correspondantes dans le tableau
values. Ces deux paramètres sont
passés par références.
Liste de paramètres
-
parser -
Une référence à une analyseur XML.
-
data -
Une chaîne de caractères contenant les données XML.
-
values -
Un tableau contenant les valeurs des données XML.
-
index -
Un tableau contenant les pointeurs vers les valeurs appropriées dans le paramètre $values.
Valeurs de retour
xml_parse_into_struct() retourne 0 si une
erreur survient et 1 en cas de succès. Ce n'est pas la même chose que FALSE
et TRUE, soyez prudent avec les opérateurs comme ===.
Exemples
Ci-dessous, vous trouverez un exemple qui illustre la structure des deux tableaux générés par la fonction. On utilise une balise simple note, placée dans une autre balise para. On analyse le tout, et on affiche la structure générée :
Exemple #1 Exemple avec xml_parse_into_struct()
<?php $simple = "<para><note>simple note</note></para>"; $p = xml_parser_create(); xml_parse_into_struct($p, $simple, $vals, $index); xml_parser_free($p); echo "Index array\n"; print_r($index); echo "\nVals array\n"; print_r($vals); ?>
<?php
class AminoAcid {
var $name; // nom aa
var $symbol; // symbole à trois lettres
var $code; // code à une lettre
var $type; // hydrophobique, chargé ou neutre
function AminoAcid ($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 == "molecule") {
$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 AminoAcid($mol);
}
$db = readDatabase("moldb.xml");
echo "** Base d'objets AminoAcid :\n";
print_r($db);
?>
** Base d'objets AminoAcid :
Array
(
[0] => aminoacid Object
(
[name] => Alanine
[symbol] => ala
=> A
[type] => hydrophobic
)
[1] => aminoacid Object
(
[name] => Lysine
[symbol] => lys
[code] => K
[type] => charged
)
)
</pre></div>
</div>
</div>
</p>
</div>
</div>
Chargement en cours