SimpleXML et son pas aussi simple d'employer le modèle d'objet : Problème et solution
SimpleXML est simple pour employer comme son nom le suggère. Cependant c'est une douleur quand vous devez vérifier la valeur d'un élément qui peut ou peut ne pas exister.
En bref utilisant elle sur le schéma de XML avec les éléments facultatifs est une douleur royale. Car SimpleXML crée seulement les objets pour lesquels les données existent, vous devrez écrire le code laid chaque fois pour examiner pour assurer l'existence d'un objet avant vous l'accès sa valeur.
Vous ne pouvez pas la résoudre en écrivant simplement une méthode de convenance. Laisse comprendre le problème et alors nous le résoudrons.
L'avantage
SimpleXML est très simple pour employer. Vous accédez à des éléments car vous accéderiez à une hiérarchie d'objet :
$xml->Items [0] - >Request [0] - >Error des >Errors [0] - [0] - >Status
Le problème
SimpleXML crée des objets seulement pour les éléments de XML qui ont des données (et correctement ainsi). Ceci le rend efficace. Cependant il le rend également plus dur pour employer quand votre schéma est flexible avec les éléments facultatifs. Laisse prendre l'exemple ci-dessus. Vous ne pouvez pas sans risque accéder au statut comme ci-dessus si les erreurs est un élément facultatif qui est seulement présent où il y a une erreur. Et vous ne pouvez pas vérifier l'existence du statut comme ceci :
isset ($xml->Items [0] - >Request [0] - >Error des >Errors [0] - [0] - >Status)
parce que les erreurs peuvent ne pas être présentes. Pour vous découvrir ainsi s'il y a n'importe quelle erreur d'abord doivent vérifier l'existence des erreurs et puis l'existence du statut (probablement) avant que vous puissiez réellement vérifier le statut. Et cela vaut pour n'importe quelle profondeur de la hiérarchie d'objet. Vous pouvez voir à quelle rapiditè cette canne devenir un casse-pieds important. Également vous êtes très pour en manquer et pour causer des disputes d'entretien. Le code devient unmaintainable aussi.
Solution
Ma solution est d'employer XPath pour de telles situations. Elle t'indique succintly la disponibilité et la valeur (si disponible) d'un champ.
Conclusion
SimpleXML en même temps que XPath est une manière très puissante de traiter vos données de XML dans le PHP.
Classé sous des nouvelles de titre, comment à, PHP, note de technologie, technologie, Web, services de Web |
|
RSS 2.0 |
Trackback cet article |
Envoyez cet article
Vous pouvez également aimer lire |


Ajoutez aux favoris de Technorati

































16 novembre 2005 à 11:42 P.M.
[...] Ceux SimpleXML et son pas aussi simple d'employer le modèle d'objet : Le problème et la solution » SimpleXML ne fonctionne pas avec PHP 5.x : Problème et solution le 16 novembre 2005 par AngsumanChakraborty [...]
22 novembre 2005 à 8:37 AM
[...] Rapporte Sony DRM Rootkit violant plusieurs permis de source ouverte, souhait de Noël de listes de Google AdSense, fournit des bouts sur Google Analytics et simplifie SimpleXML pour des réalisateurs de PHP. [...]
22 novembre 2005 à 8:42 AM
[...] Rapporte Sony DRM Rootkit violant plusieurs permis de source ouverte, souhait de Noël de listes de Google AdSense, fournit des bouts sur Google Analytics et simplifie SimpleXML pour des réalisateurs de PHP. [...]
19 décembre 2005 à 2:55 AM
[...] Rapporte Sony DRM Rootkit violant plusieurs permis de source ouverte, souhait de Noël de listes de Google AdSense, fournit des bouts sur Google Analytics et simplifie SimpleXML pour des réalisateurs de PHP. [...]