如何使用Hpricot从XML中的文本中删除<! - [CDATA []] - >标签?

时间:2010-08-22 19:13:18

标签: ruby xml hpricot xml-parsing

我只想要那些标签外的文本。 Hrpicot.XML有没有这方面的方法?

3 个答案:

答案 0 :(得分:6)

使用element.inner_text而不是#inner_html并为您删除它们

答案 1 :(得分:2)

doc.search("*") do |element|
    element.swap element.content if element.kind_of? Hpricot::CData
end

答案 2 :(得分:1)

doc = Hpricot::XML(open('http://www.cnn.com/.element/ssi/www/auto/2.0/video/xml/most_popular.xml'))
(doc/:cnn_video/:video).each do |status|
  ['tease_txt'].each do |el|
    puts "#{status.at(el).inner_text}"
  end
end

示例输出(看起来很垃圾,但这不是垃圾邮件!):

  

新里诺空难视频显示影响力   青少年捕获800磅重的鳄鱼   恢复职业发布'不要问'废除
  令人毛骨悚然的裙子偷窥者
  公共汽车大小的卫星击中地球......   'DWTS'演员首次亮相舞厅   什么导致教练死在海洋世界?   什么导致特洛伊戴维斯宽恕否认?