Pas de moteur DOM en ruby ? vrai­ment ?

Je trouve ça telle­ment étrange qu’à mon avis j’ai simple­ment des oeillères qui me masquent la bonne librai­rie de code.

Je cherche un moteur DOM XML utili­sable en program­ma­tion ruby. J’ai trouvé des moteurs dits DOM-like, c’est à dire des TreeBuil­der avec des API plus ou moins heureuses, et dont le parcours est géné­ra­le­ment fran­che­ment pénible si on n’uti­lise pas XPath ou qu’on ne recherche pas quelques éléments parti­cu­lier via leur chemin. Hpri­cot, Noko­giri, REXML et même libxml font partie de cette caté­go­rie.

Par contre je n’ai trouvé aucun moteur DOM qui cherche vrai­ment l’im­plé­men­ta­tion de la spéci­fi­ca­tion DOM. J’at­tends par exemple un attri­but docu­mentE­le­ment sur la classe DOMDo­cu­ment. J’au­rai compris sur Ruby avoir un attri­but docu­ment_element au lieu de docu­mentE­le­ment mais là c’est géné­ra­le­ment un root que je retrouve. Sur les inter­faces pour parcou­rir le XML les diffé­rences sont bien plus profondes et je me retrouve avec des APIs qui sont géné­ra­le­ment très diffé­rentes.

Certes, je peux me passer de DOM mais ce serait quand même étrange que personne n’ait implé­menté en ruby ce stan­dard extrê­me­ment courant. Qu’ai-je manqué ?


Publié

dans

par

Étiquettes :

Commentaires

2 réponses à “Pas de moteur DOM en ruby ? vrai­ment ?”

  1. Avatar de Tito Gonzalito
    Tito Gonzalito

    Mais si, mais si quand on cherche, on trouve :
    http://libgdome-ruby.berlios.de/
    À éventuellement patcher pour ruby 1.9, mais contribuer ça fait aussi partie de l’Open Source.

    1. Avatar de Éric D.
      Éric D.

      C’est un peu vieux, mais ça vaut le coup de regarder, effectivement.

      Je me suis fait une raison et je suis passé à Nokigiri entre temps mais je jetterai un oeil si j’arrive à porter le connecteur libgdome vers ruby 1.9

      Merci

      Je reste quand même étonné que ce soit la seule occurrence de DOM en ruby, et qu’elle ne soit plus maintenue depuis des années

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *