红宝石 – 尝试使用nokogiri获取xml文件中的cdata标签内的内容
发布时间:2020-12-16 07:55:06 所属栏目:百科 来源:网络整理
导读:我已经看到了几件事情,但到目前为止,似乎还没有任何工作.我正在使用nokogiri在rails 3 ruby?? 1.9.2上通过url解析一个xml. xml的代码片段如下所示: NewsLineText ![CDATA[ Anna Kendrick is ''obsessed'' with 'Game of Thrones' and loves to cook,particu
我已经看到了几件事情,但到目前为止,似乎还没有任何工作.我正在使用nokogiri在rails 3
ruby?? 1.9.2上通过url解析一个xml.
xml的代码片段如下所示: <NewsLineText> <![CDATA[ Anna Kendrick is ''obsessed'' with 'Game of Thrones' and loves to cook,particularly creme brulee. ]]> </NewsLineText> 我试图解析出来,以获取与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 我得到的回报是 <newslinetext></newslinetext> NOTHING NOTHING 所以我知道我的标签被命名/拼写正确,以获取newslinetext数据,但cdata文本从不显示. nokogiri需要做什么才能得到这个文本?
您正在尝试使用Nokogiri的HMTL解析器来解析XML.如果节点来自XML解析器,那么r将为零,因为XML是区分大小写的;你的r不是零,所以你使用的是不区分大小写的HTML解析器.
使用Nokogiri的XML解析器,你会得到这样的东西: >> r = doc.at_xpath('.//NewsLineText') => #<Nokogiri::XML::Element:0x8066ad34 name="NewsLineText" children=[#<Nokogiri::XML::Text:0x8066aac8 "n ">,#<Nokogiri::XML::CDATA:0x8066a9c4 "n Anna Kendrick is ''obsessed'' with 'Game of Thrones' and loves to cook,particularly creme brulee.n ">,#<Nokogiri::XML::Text:0x8066a8d4 "n">]> >> r.text => "n n Anna Kendrick is ''obsessed'' with 'Game of Thrones' and loves to cook,particularly creme brulee.n n" 您将能够通过r.text或r.children获取CDATA. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |