9
votes

Pour une analyse RSS qui a un point de colon dans la balise avec Ruby?

J'essaie d'analyser les informations d'un flux RSS qui possède cette structure de balises:

<dc:subject>foo bar</dc:subject>


0 commentaires

3 Réponses :


-1
votes

Je pense item ['dc: sujet'] pourrait fonctionner.


2 commentaires

Ouais, l'analyseur RSS ignore complètement ces étiquettes qu'il ne reconnaît pas, de sorte qu'ils ne le font même pas dans l'objet objet . Dommage. Comment puis-je saisir les éléments <élément> avec libxml ? L'arbre XML ressemble à ceci: <élément> <élément> , mais faire doc.find ("// rdf: rdf / élément"). Chaque ne trouve rien.


Je recommande de regarder dans Nokogiri au lieu de libxml. Nokogiri est très robuste et bien soutenu.



7
votes

Tags avec ':' en eux sont vraiment des étiquettes XML avec un espace de noms. Je n'ai jamais eu de bons résultats en utilisant le module RSS car les formats d'alimentation ne répondent souvent pas aux spécifications, ce qui entraîne l'abandon du module. Je recommande vivement d'utiliser Nokogiri pour analyser le flux, que ce soit RDF, RSS ou Atom.

Nokogiri a la possibilité d'utiliser des accesseurs XPath ou des accesseurs CSS, et des espaces de noms de support. Les deux dernières lignes seraient équivalentes: p> xxx pré>

Lorsque vous traitez des espaces de noms, vous devez ajouter la déclaration à l'accesseur XPath: P>

doc.at('//dc:subject', 'dc' => 'link to dc declaration') 


3 commentaires

Élargir sur cette idée, l'arrogance de la GEM est construite sur Nokogiri et facilite l'analyse d'une alimentation aussi simple que de passer à l'URL d'alimentation et de manipuler la matrice de postes retournés. Rubygems: rubygems.org/gems/arrogance


Je vais y jeter un coup d'oeil quelque temps. Quand j'ai écrit mon agrégateur, il n'y avait rien que j'ai trouvé que cela gênait la large gamme de nourris hachés totalement foirés que j'ai rencontrés.


Yup, arrogance découvre les balises pour vous et les définit comme [: Titre] [: Auteur] [: Link] [: Description] [: Date] Non quoi.



1
votes

Le RSS module semble Pour avoir la possibilité de faire ces attributs d'espace de noms XML, c'est-à-dire comme ceci:

nourrir.items.each fo | article | met "date: # {item.dc_date}" finir


0 commentaires