Les options vous permettent d'influencer le traitement effectué par XML_Unserializer sur le parsage d'un document XML. Cela vous permet de définir si oui ou non les attributs doivent être parsés, si oui ou non nous devons utiliser des tableaux associatifs ou des objets pour les types de données complexes et bien plus encore.
Les options peuvent être passées comme un tableau associatif au constructeur de XML_Unserializer. Vous devriez également utiliser setOption(), ou setOptions() pour définir une ou plusieurs options après la création de l'instance de XML_Unserializer.
Voici une liste de toutes les options supportées par XML_Unserializer.
Option | Valeurs possibles | Défaut | Description |
---|---|---|---|
complexType | 'array' ou 'object' | 'array' | Définie si les tags désirés doivent être retournés sous la forme d'un tablau associatif ou d'un objet |
tagAsClass | TRUE ou FALSE | TRUE | Définit, si oui ou non le nom de la balise doit être utilisé en tant que nom de classe si complexType a été défini comme 'object'. Si aucune classe avec ce nom de balise n'existe, la classe définie par 'defaultClass' est utilisée. |
defaultClass | toutes chaînes | stdClass | Définit la classe à utiliser pour créer les objets, si l'option complexType est défini à 'object'. |
keyAttribute | toute chaîne ou tableau | '_originalKey' | Si l'attribut spécifié dans cette option existe pour un tag, la valeur sera utilisée comme nom de la clé ou de la propriété dans l'objet ou le tableau parent |
typeAttribute | toute chaîne | '_type' | Si l'attribut spécifié dans cette option existe pour un tag, la valeur sera utilisé en tant que nom de clé ou de propriété dans l'objet ou le tableau parent. Vous devriez également spécifier un tableau associatif si vous voulez utiliser différents attributs de clés pour différentes balises. Dans ce cas, la clé du tableau contient le nom de la balise et la valeur du tableau, le nom de l'attribut correspondant. |
classAttribute | toute chaîne | '_class' | Si XML_Unserializer crée un objet, il sera une instance de stdClass, à moins que le tag a un attribut spécifié dans cette option. Si elle est définie, le nom de la classe stocké dans la valeur de l'attribut sera utilisé. |
parseAttributes | TRUE ou FALSE | FALSE | Avec cette option, vous demandez à XML_Unserializer de parser également les attributs des tags. Les deux options suivantes définissent le traitement des attributs parsés. |
attributesArray | FALSE ou toute chaîne | FALSE | Si définie à FALSE, les attributs seront traités comme les tags définis. Si vous définissez cette option en tant que chaîne, un nouveau tableau sera créé et stocké dans la structure parent en utilisant les clés spécifiées dans cette option. |
prependAttributes | toute chaîne | '' | vous permet de spécifier un préfixe pour les noms des attributs. |
contentName | toute chaîne | '_content' | Si vous décidez de parser les attributs ou un tag contenant des données cdata et des tags, alors les données cdata seront stockées dans l'index spécifié ici. |
tagMap | tableau associatif | array() | Ceci vous autorise de mapper les noms des tags aux classes PHP. Les noms des tags doivent être dans les clés et les valeurs contenant les noms de classes à utiliser pour chaque tag. |
forceEnum | tableau indexé | array() | Ceci vous autorise à spécifier une liste de balises qui seront automatiquement converties en un tableau indexé, indépendament du nombre de répétitions de la balise. Ceci vous évitera plusieurs conditions if dans votre code. |
encoding | toute chaîne d'encodage valide | null | Définit l'encodage du document original. |
targetEncoding | toute chaîne d'encodage valide | null | Définit l'encodage cible des données résultantes. |
decodeFunction | tout callback PHP valide | null | Cette option vous autorise de définir une fonction ou une méthode de callback, qui sera appliquée à toutes les données et attributs du document avant qu'elles ne soient sauvegardées dans le résultat. Ceci vous permet de décoder n'importe quelle donnée décodée dans le XML ou de convertir tout le contenu en minuscule. |
returnResult | TRUE ou FALSE | FALSE | Si défini à TRUE, XML_Unserializer::unserialize() retournera le résultat si le document peut être délinéarisé au lieu de juste TRUE. |
L'exemple suivant montre comment définir des options de XML_Unserializer.
Utilisation du constructeur
<?php
require_once "XML/Unserializer.php";
$options = array(
'complexType' => 'array'
);
$us = new XML_Unserializer($options);
$result = $us->unserialize('exemple.xml', true);
?>
L'exemple suivant montre comment définir des options de XML_Unserializer, si l'instance a déjà été créée.
Utilisation de setOption() et de setOptions()
<?php
require_once "XML/Unserializer.php";
$us = new XML_Unserializer();
$options = array(
'tagMap' => array( 'util' => 'XML_Util' ),
'classAttribute' => '_classname'
);
$us->setOptions($options);
$us->setOption('complexType', 'object');
$result = $us->unserialize('exemple.xml', true);
?>