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.