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>