gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 06:38:00 25 4
gpt4 key购买 nike

我已经看到了几件事,但到目前为止似乎没有任何效果。我正在使用 nokogiri on 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

所以我知道我的标签已正确命名/拼写以获取新闻行文本数据,但 cdata 文本从未显示。

我需要用 nokogiri 做什么才能得到这个文本?

最佳答案

您正在尝试使用 Nokogiri 的 HMTL 解析器来解析 XML。如果 node 来自 XML 解析器,那么 r 将是 nil,因为 XML 区分大小写;您的 r 不是 nil,因此您使用的是不区分大小写的 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.textr.children 获取 CDATA。

关于ruby - 尝试使用 nokogiri 获取 xml 文件中 cdata 标签内的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10476783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com