0 votes

Gestion des balises vides dans le xml_serializer de pear

J'utilise PEAR XML Serializer pour générer des résultats xml à partir de tableaux. J'ai découvert que les éléments vides d'un tableau sont encodés comme ceci : <arraykey/>. Je préférerais que ce soit ainsi <arraykey></arraykey>.

Voici les options qui s'offrent à moi :

            $options = array
            (
                'indent' => '   ',
                'defaultTagName' => $this->xml_tag_name,
                'addDecl' => true,
                'encoding'  => 'UTF-8',
                'rootName' => $this->xml_root_name,
                XML_SERIALIZER_OPTION_RETURN_RESULT => true
            );

Existe-t-il d'autres options à ajouter pour résoudre ce problème ?

1voto

JP. Points 858

Dans l'état actuel de la bibliothèque, non, elle utilise PEAR XML_Util et si vous regardez le code de XML_Util::createTagFromArray() il fait ce qui suit pour les balises vides :

if (!isset($tag['content']) || (string)$tag['content'] == '')
{
    $tag = sprintf('<%s%s />', $tag['qname'], $attList);
}

Vous pourriez probablement simuler un contenu vide à l'aide d'une chaîne de caractères contenant un espace, comme par exemple ' ' mais cela donnerait quelque chose comme <arraykey> </arraykey> .

BTW, <arraykey/> est tout à fait légal en XML (il est recommandé pour les balises vides, il est également utilisé en XHTML).

0voto

Rich Points 2160

Y a-t-il une raison concrète pour laquelle vous préférez le <tag></tag> format sur <tag /> ? Notant que (comme l'a dit une autre affiche) <tag /> est un XML totalement valide. Personnellement, je préfère la fermeture automatique pour une balise vide.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X