@@ -442,9 +442,9 @@ module Agents |
||
442 | 442 |
when Nokogiri::XML::NodeSet |
443 | 443 |
result = nodes.map { |node| |
444 | 444 |
value = node.xpath(extraction_details['value'] || '.') |
445 |
- if extraction_details['strip_cdata'] |
|
445 |
+ if value.is_a?(Nokogiri::XML::NodeSet) |
|
446 | 446 |
child = value.first |
447 |
- if child.cdata? |
|
447 |
+ if child && child.cdata? |
|
448 | 448 |
value = child.text |
449 | 449 |
end |
450 | 450 |
end |
@@ -543,8 +543,8 @@ describe Agents::WebsiteAgent do |
||
543 | 543 |
'url' => 'http://example.com/cdata_rss.atom', |
544 | 544 |
'mode' => 'on_change', |
545 | 545 |
'extract' => { |
546 |
- 'author' => { 'xpath' => '/feed/entry/author/name', 'value' => './/text()', 'strip_cdata' => true }, |
|
547 |
- 'title' => { 'xpath' => '/feed/entry/title', 'value' => './/text()', 'strip_cdata' => false }, |
|
546 |
+ 'author' => { 'xpath' => '/feed/entry/author/name', 'value' => './/text()'}, |
|
547 |
+ 'title' => { 'xpath' => '/feed/entry/title', 'value' => './/text()' }, |
|
548 | 548 |
'content' => { 'xpath' => '/feed/entry/content', 'value' => './/text()' }, |
549 | 549 |
} |
550 | 550 |
}, keep_events_for: 2.days) |
@@ -558,8 +558,8 @@ describe Agents::WebsiteAgent do |
||
558 | 558 |
}.to change { Event.count }.by(10) |
559 | 559 |
event = Event.last |
560 | 560 |
expect(event.payload['author']).to eq('bill98') |
561 |
- expect(event.payload['title']).to eq('<![CDATA[Help: Rainmeter Skins • Test if Today is Between 2 Dates]]>') |
|
562 |
- expect(event.payload['content']).to start_with('<![CDATA[Can I ') |
|
561 |
+ expect(event.payload['title']).to eq('Help: Rainmeter Skins • Test if Today is Between 2 Dates') |
|
562 |
+ expect(event.payload['content']).to start_with('Can I ') |
|
563 | 563 |
end |
564 | 564 |
|
565 | 565 |
end |