Parseur xml

Soyez le premier à donner votre avis sur cette source.

Vue 9 146 fois - Téléchargée 690 fois

Description

Pour un projet que je réalise j'ai voulu utiliser les parseurs XML afin de normaliser une page à ma façon, notamment en modifiant les ID des éléments d'une page ou d'une partie d'une page. J'ai regarder dans les outils xml existant mais rien ne m'allait alors j'ai voulu réinventer la roue.

Tout porte sur l'analyse de texte utilisant des expressions régulières, que j'ai faite à ma manière.
Au moment de l'analyse, il y a plusieurs étapes:
- une simplification du XML : simplifyDataContent : remplacement des caractères superflus et des chevrons dans le XML qui sont en dehors des balises.
- une analyse du XML qui va stocker les différents éléments dans des Nodes et des Attributs.
- une simplification des Nodes trouvé, fonction non développée pour le moment mais qui doit permettre de supprimer les noeuds "inutiles".

Dans l'exemple, j'ai supprimé les balises le type des balises input... les boutons n'apparaissent donc plus

Source / Exemple :


/**

  • Function : analyse
  • Description : parse xml content
  • Return : return the array created after the analyse
  • /
public function analyse() { $this->DataResult = null; try { if ($this->MethodWithPHPLib == true) $this->analyseParsing(); else $this->analyseComplete(); $this->isAnalised = false; } catch (Exception $ex) { $this->DataResult = null; } return $this->DataResult; } /**
  • Function : analyseParsing
  • Description :
  • Return :
  • /
private function analyseParsing() { if ($this->DataContent != null) { $this->simplifyDataContent(); $xp = xml_parser_create(); xml_parser_set_option($xp, XML_OPTION_CASE_FOLDING, false); xml_parser_set_option($xp, XML_OPTION_SKIP_WHITE, true); xml_parse_into_struct($xp, $this->DataContent, $vals, $index); xml_parser_free($xp); // Save XMl in Table $this->DataResult = $this->xmlTOarray($vals, $i = 0); } } /**
  • Function : analyseComplete
  • Description :
  • Return :
  • /
private function analyseComplete() { if ($this->DataContent != null) { $this->simplifyDataContent(); $this->DataResult = $this->xmlTOnode($this->DataContent); $this->simplifyNode(); } }

Conclusion :


Dans le parseur, j'ai laissé la possibilité d'utiliser le celui de PHP ou le mien en comparaison.
Attention si la "source" n'est pas valide, qu'une balise est ouverte et non fermée, l'application s'arrêtera et le résultat sera null, enfin je l'espère ;)

De plus ce programme va être amélioré et modifié par la suite.

Pour avoir un résultat il faut regarder la source à l'exécution et comparer les valeurs des tags.

Codes Sources

Ajouter un commentaire Commentaires
Messages postés
215
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
10 mars 2014

Ce qui m'a poussé à le faire, c'est le chalenge, avec un collègue on fait un site Web style blog, et dedans j'ai besoin de parser des xml récupérer les informations, changer des identifiants (pour qu'ils soient unique) et plein d'autre choses. Ce que j'avais trouvé ne me plaisait pas alors j'ai refait, voila tout :)
Maintenant il faut encore que j'améliore notamment les expressions régulière afin d'avoir un traitement plus rapide. Si quelqu'un à des idées il n'y a pas de problème :)
Messages postés
1123
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
En fait je ne comprends pas ce qui t'as poussé à faire ton propre parseur ?

Bon, mis à part le fait que ca te permet d'apprendre les expregs et bien manipuler les xml, tu te rendra vite compte qu'un xml c'est vite l'enfer à traiter ! :s
Messages postés
215
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
10 mars 2014

Oui je l'ai dit plus haut, j'ai voulu refaire un parseur perso et ne t'inquiète pas j'utilise bien PHP5.
Mais bon ca m'a fiat travailler les expressions régulières....
TU as d'autres commentaires?
Messages postés
1123
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
C'est con mais tu t'es pris la tête pour rien !

http://php.net/DOM

Tu peux absolument tout faire avec, parser le dom, le valider avec une dtd, modifier les nodes, faire des recherches XPath. Et en plus, c'est intégré par défaut à PHP5.

Alors si tu me sort que tu tourne sous php4, ca va mal aller pour toi

;) :p

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (cs_petifa)