Eléphanteau du PHP |
45 Messages
31 oct. 2008, 22:44
L'immense interet de simplexml est de pouvoir etre etendu.
$doc = simplexml_load_string($mystring, "MyDerivedClass");
Pour cela MyDerivedClass doit être signé
MyDerivedClass extends simpleXmlElement.
La premiere chose, c'est donc d'instancier son simplexml sur la classe Element.
La classe Element apporte méthodes (additionnelles )
- getElements($css_selector); // retourne toutes les nodes (array) matchant le selecteur
- getElement($css_selector); // retourne la premiere node matchant le selecteur
Les objets etendu de simplexml en retournent d'autres
$doc = simplexmlload_string("$mystring, "Element") // Element object
$doc->body // Est AUSSI un Element object.
donc, on peut facilement chainer ses méthodes
$doc->getElement("body")->getElement("ul"); // Element object.
Une chose à savoir c'est que simplexml est ... simple et n'a que tres peu de fonction de navigation dans son dom ( en fait, juste children() et xpath, et biensur, la possiblité d'acceder aux collections de childnode via l'opérateur -> ).
J'ai donc cette structure
Element extends XHTMLElement
- getElements
- getElement
XHTMLElement extends SimpleXmlElement
- getParent();
- ... autres fonctions de navigation dans le dom