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
Chargement en cours