红宝石 – 尝试使用nokogiri获取xml文件中的cdata标签内的内容

我已经看到了几件事情,但到目前为止,似乎还没有任何工作.我正在使用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.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇