尝试使用nokogiri获取xml文件中的cdata标记内容

我已经看到了几件事,但到目前为止似乎没有任何工作。 我正在使用rails 3 ruby​​ 1.9.2上的nokogiri通过url解析xml。

xml的片段如下所示:

   

我试图解析这个以获取与NewsLineText相关联的文本

 r = node.at_xpath('.//newslinetext') if node.at_xpath('.//newslinetext') s = node.at_xpath('.//newslinetext').text if node.at_xpath('.//newslinetext') t = node.at_xpath('.//newslinetext').content if node.at_xpath('.//newslinetext') puts r puts s ? if s.blank? 'NOTHING' : s puts t ? if t.blank? 'NOTHING' : t 

我得到的回报是

  NOTHING NOTHING 

所以我知道我的标签被正确命名/拼写以获取newslinetext数据,但是cdata文本永远不会出现。

我需要用nokogiri来获取此文本?

您正在尝试使用Nokogiri的HMTL解析器解析XML。 如果node来自XML解析器,则rnil因为XML区分大小写; 你的r不是nil所以你正在使用不区分大小写的HTML解析器。

使用Nokogiri的XML解析器,你会得到这样的东西:

 >> r = doc.at_xpath('.//NewsLineText') => #, #, #]> >> r.text => "\n \n Anna Kendrick is ''obsessed'' with 'Game of Thrones' and loves to cook, particularly creme brulee.\n \n" 

你将能够通过r.textr.children获得CDATA。

啊,我明白了。 @mu所说的是对的。 但要直接得到cdata,也许:

 xml =<   EOF node = Nokogiri::XML xml cdata = node.search('NewsLineText').children.find{|e| e.cdata?} 
Interesting Posts