PHP5 inclut de base la bibliothèque SimpleXML qui permet, comme son nom l'indique de gérer de manière très simple du code XML.
Un point est par contre problématique, la gestion des sections CDATA. En effet, supposons que l'on parte du code XML suivant :
Lorsque l'on récupère les enfants d'un nœud via :
On a la mauvaise surprise de ne pas obtenir tous les nœuds... En effet :
- le premier passe sans problème, car il ne contient pas de section CDATA.
- le second contient un CDATA et se perd dans la nature...
- le troisième contient un CDATA mais a également un attribut, il est alors correctement renvoyé (ne me demandez pas pourquoi).
Par contre, dans le cas où tous les nœuds sont basés sur le modèle du second (CDATA sans attribut), le premier est bien trouvé et retourné (au lieu d'un tableau).
Une fois le problème identifié j'ai fait quelques recherches et j'ai pu trouver cette solution consistant à éliminer les CDATA avant le traitement du code XML. Je ne la trouve pas très satisfaisante mais je n'ai pour l'instant rien trouvé d'autre...
Soumettre un commentaire