1 Dernière modification par SamRay1024 (21/12/2006 23h49m55s)

Sujet : [PHP5][DOM][BOGUE] DomDocument->formatOutput et DomDocument->load()

Bonsoir,

Je mets ici une solution que je viens de trouver après une bonne heure de galère. Je suis en train d'écrire une classe qui permet de gérer un fichier Xml. Cette classe hérite de l'objet DomDocument ce qui me permet de coupler la classe à un fichier Xml afin de le manipuler.

Il se trouve que j'ai eu un problème avec l'indentation du fichier Xml. L'objet DomDocument possède une propriété qui permet d'indenter automatiquement le fichier final : formatOutput. J'initialisais donc cet attribut à true dans le constructeur de ma classe. Dans ce même constructeur, je lance la création du fichier Xml s'il n'existe pas et je lui ajoute quelques éléments par défaut. Le fichier généré est indenté correctement.

Une fois généré, je recharge ce fichier à l'aide de la méthode DomDocument->load() puis je procède à des ajouts de nouveaux éléments. Et c'est là le drame : les nouveaux éléments ne sont plus indentés automatiquement !

Il se trouve que c'est un bogue de PHP5 encore non résolu.

La solution pour outrepasser ce bogue consiste à changer la place de l'initialisation de l'attribut formatOutput pour la mettre après l'appel à la fonction DomDocument->load() et à initialiser DomDocument->preserveWhiteSpace à false avant.

A bon entendeur, salut !

-------------------------------
"Keyboard not detected, press a key to continue..."

WWW