Parseur xml

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

A voir également

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)