« Programmation PHP/Exemples/DomXml » : différence entre les versions
Contenu supprimé Contenu ajouté
+ Sommaire + ortho + formulation + niveau des titres + accents |
|||
Ligne 1 :
{{Programmation PHP}}
Les
==Objectif==
*
* Créer une classe utilitaire domxml pour la recevoir avec ses petites soeurs.
=
<pre>
<?xml version="1.0" encoding="UTF-8"?>
<root>
<tag1><sous-tag1>texte sous-tag1<sous-tag2 att1="att2" att3="att3"></sous-tag2></sous-tag1>▼
▲
ceci</p>est du body texte à extraire
▲ </tag1>
</tag1>
</etEncoreUnTagSuperflu> text de début ou de fin
</tag3>
</root>
</pre>
=
On doit maintenant écrire une fonction, la plus optimale possible, pour
Cette fonction doit :
On écrit la fonction récursive qui décapsulera
▲** recevoir en entrée un flux xml/rss valide
▲** doit migrer les attributs et le contenu dans un tableau
▲On écrit la fonction récursive qui décapsulera chaques tags en deux sous-tableaux par tag ([meta] ou attibuts ) et ( [data] ou noeud text )
Cette fonction doit :
▲** tester le type de noeud (text ou tag)
▲** ? si texte >extraire le texte dans >[data]
▲** comme la structure est imbriquée et non listée :
▲*** les tags de débuts et de fins ne se suivent pas...
▲*** la fonction sera donc récursive et s'appellera elle-même pour un output [[lifo]]
▲*** par soucis du détail technique on fera une fonction getAttribute() pour optimiser le code
<pre>
function getAttribute($node)
{// >((dom)node) ((array)tab)>
Ligne 70 ⟶ 66 :
return $tab;
}//
</pre>
Description :
On s'attaque ensuite au plus gros du travail de notre convertisseur à savoir domxml2array():
<pre>
function domxml2array($node,&$tab,&$i)
{// >((dom)node, (array)tab, (int)i) ((array)tab)>
Ligne 104 ⟶ 98 :
Description :
# si le premier child existe
La fonction utilitaire print_r_html disponible sur php.net permettra de déposer le contenu à l'écran :
Ligne 127 ⟶ 120 :
</pre>
==Création de la classe==
On élabore une classe utilitaire pour php4 à implémenter au fur et à mesure :
▲** On la baptise DomTree
▲** On y implémente les fonctions créées...
<pre>
Ligne 206 ⟶ 198 :
?>
</pre>
==Application==
Dans un fichier test.php on
<pre>
<?php
Ligne 223 ⟶ 213 :
$doc = new DomTree('document.xml');
//
$root = $doc->getTag('root');
Ligne 233 ⟶ 223 :
?>
</pre>
==Aperçu==
On obtient un arbre structuré easy2use pour le web2
<pre>▼
▲<pre>
Array
(
Ligne 416 ⟶ 405 :
)
</pre>
==En bref==
On a une fonction fort utile à porter sur php5 ou à optimiser histoire de ne plus avoir d'incréments dans les données du tableau
|