Rapide Advanced Adulte
 
 Web|Image|Shop|Video|News|Wmx|Mobile|Wiki|Ajouter ce moteur

     Manuel PHP     
Partager
 
 
Partager
Partager

 

Table :

.utf8 decode
.utf8 encode
.xml error string
.xml get current byte index
.xml get current column number
.xml get current line number
.xml get error code
.xml parse into struct
.xml parse
.xml parser create ns
.xml parser create
.xml parser free
.xml parser get option
.xml parser set option
.xml set character data handler
.xml set default handler
.xml set element handler
.xml set end namespace decl handler
.xml set external entity ref handler
.xml set notation decl handler
.xml set object
.xml set processing instruction handler
.xml set start namespace decl handler
.xml set unparsed entity decl handler
 
   

  xml_parse_into_struct  


xml_parse_into_struct

(PHP 3 >= 3.0.8, PHP 4, PHP 5)

xml_parse_into_struct -- Analyse une structure XML

Description

int xml_parse_into_struct ( resource parser, string data, array &values [, array &index] )

xml_parse_into_struct() analyse le fichier 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.

Note : 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 ===.

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
"Tableau d'index \n";
print_r($index);
echo
"\nTableau de valeurs \n";
print_r($vals);
?>

L'exemple ci-dessus va afficher :

Tableau d'index 
Array
(
    [PARA] => Array
        (
            [0] => 0
            [1] => 2
        )

    [NOTE] => Array
        (
            [0] => 1
        )

)

Tableau de valeurs 
Array
(
    [0] => Array
        (
            [tag] => PARA
            [type] => open
            [level] => 1
        )

    [1] => Array
        (
            [tag] => NOTE
            [type] => complete
            [level] => 2
            [value] => Simple Note
        )

    [2] => Array
        (
            [tag] => PARA
            [type] => close
            [level] => 1
        )

)

L'analyse événementielle (comme celle de expat), peut se révéler complexe lorsque le document XML est complexe. xml_parse_into_struct() ne génère pas d'objet de type DOM, mais il génère plutôt des structures qui peuvent être parcourues à la façon d'un arbre. Considérons le fichier suivant, qui représente une petite base de données XML :

Exemple 2. moldb.xml - Petite base de données moléculaires

<?xml version="1.0"?>
<moldb>

    <molecule>
        <name>Alanine</name>
        <symbol>ala</symbol>
        <code>A</code>
        <type>hydrophobic</type>
    </molecule>

    <molecule>
        <name>Lysine</name>
        <symbol>lys</symbol>
        <code>K</code>
        <type>charged</type>
    </molecule>

</moldb>
Et maintenant, un code qui analyse le document, et génère les objets ad hoc :

Exemple 3. parsemoldb.php : Analyse moldb.xml et crée un tableau d'objets moléculaires

<?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);

?>

Après exécution de parsemoldb.php, la variable $db contient un tableau d'objets AminoAcid, et l'affichage le confirme :

** Base d'objets AminoAcid :
Array
(
    [0] => aminoacid Object
        (
            [name] => Alanine
            [symbol] => ala
            [code] => A
            [type] => hydrophobic
        )

    [1] => aminoacid Object
        (
            [name] => Lysine
            [symbol] => lys
            [code] => K
            [type] => charged
        )

)


    Annonces       
 

 Retour au chapitre Php

 

Top
 

Ajouter JungleKey.fr à votre Explorateur

 
 

About Us | © 2007 JungleKey




iBlack | Mobile | Wiki | Ajouter ce moteur
.