2009-10-08 6 views
0

Je fais actuellement beaucoup d'analyse de données, et j'ai joué avec des fonctions PHP pour XML telles que XML simple et quelques autres ici et là.Expression régulière vs fonctions XML en PHP

Mais il semble toujours y avoir une sorte de problème avec les traiter, principalement en raison de la façon dont les données sont présentées.

La méthode la plus fiable que j'ai trouvée est de simplement utiliser simplement preg_match_all et l'expression rationnelle pour placer mes données dans le script à traiter.

Est-ce que quelqu'un voit un problème avec cela? Quels sont les inconvénients de l'utilisation de l'expression régulière plutôt que des analyseurs XML de construction prêts?

Ma principale préoccupation est la vitesse et l'utilisation des ressources par le serveur.

Répondre

1

Si vous utilisez DOMDocument et DOMXpath, je suppose que cela résoudra vos problèmes.

Voir http://jp2.php.net/manual/en/class.domdocument.php et http://jp2.php.net/manual/en/class.domxpath.php

Pourriez-vous donner un exemple de ce que vous essayez de faire, si?

Modifier
Pour répondre directement à votre question, cependant: les expressions régulières sont faciles à gâcher - le traitement particulier des structures hiérarchiques comme xml. Même si vous le faites correctement, il sera probablement plus lent que d'utiliser xpath.

Edit 2
Juste pour ajouter, la mise en œuvre de php de XPath, DOMXpath ne supporte que XPath 1.0. Si vous devez utiliser des expressions régulières pour évaluer le contenu d'un élément ou d'un de ses attributs, alors vous aurez besoin de quelque chose supportant xpath 2.0 ... ou d'une regex risquée et sujette aux erreurs.

+0

ça varie vraiment, il ne reste plus qu'à travailler s'il y a un problème avec moi en utilisant une expression régulière et si cela vaut la peine d'utiliser d'autres fonctions. –

1

L'analyse syntaxique XML est une activité sérieuse et lourde. Si votre flux de données est assez simple pour analyser des expressions régulières, cela sera le moyen le plus efficace de l'analyser.

Si vous voulez faire l'analyse XML tout en minimisant les ressources, l'analyseur SAX est probablement votre meilleur pari. Ce ne sera pas aussi efficace que les expressions rationnelles faites à la main, mais cela pourrait être suffisant.

http://www.brainbell.com/tutorials/php/Parsing_XML_With_SAX.htm

Les DOM et parseurs XML simples exigent le document entier à charger, ils peuvent vérifier la doc, et puis le convertir en une structure de noeud, et vous pouvez utiliser les données. Cela ressemble à beaucoup de travail pour l'analyseur? C'est. Mais pour de nombreuses raisons, c'est toujours approprié.

Pour la plupart de mon travail, j'ai abandonné XML et j'utilise JSON.

+0

Ouais JSON est fantastique si disponible, mais nous obtenons un téléchargement de fichiers XML sur FTP, puis les traiter. Le problème avec RegEx je pense est le fait que le fichier entier est chargé en mémoire, puis divisé en les parties dont nous avons besoin (donc les deux parties en mémoire pendant un petit moment). Donc, beaucoup de ressources serveur sont prises en charge. Je vais vérifier SAX maintenant ... –