2010-07-20 3 views
1

У меня есть Blogspot экспортируемый файл XML, и это выглядит примерно так:Разбор Blogspot XML-файл с Nokogiri

<feed> 
<entry> 
<title> title </title> 
<content type="html"> Content </content> 
</entry> 
<entry> 
<title> title </title> 
<content type="html"> Content </content> 
</entry> 
</feed> 

Как разобрать с Nokogiri и Xpath ???

Вот что у меня есть:

#!/usr/bin/env ruby 

require 'rubygems' 
require 'nokogiri' 


doc = Nokogiri::XML(File.open("blogspot.xml")) 

doc.xpath('//content[@type="html"]').each do |node| 
    puts node.text 
end 

, но это не дает мне ничего:/

какие-либо предложения? :/

ответ

0

Ваш код работает для меня. Были некоторые проблемы с определенной версией Нокигири.

я получаю:

Content 
Content 

Я использую nokogiri (1.4.1 x86-mswin32)

+0

спасибо nigel - оказалось, что мне нужно быть очень специфичным с моими выражениями xpath - или отбросить ненужные атрибуты: D – meilas

0

получается, что я должен был удалить атрибуты для подачи

<feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'> 
0

I просто наткнулся на этот вопрос. Проблема, как представляется, XML пространства имен:

«Оказывается, что я должен был удалить атрибуты для корма»

<feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'> 

Пространства имен XML усложняют доступ к узлам, так как они обеспечивают способ отделить подобные теги , Прочтите раздел «Пространства имен» Searching an HTML/XML Document.

У Nokogiri также есть метод remove_namespaces!, который иногда полезен для решения проблемы, но имеет некоторые недостатки.

Смежные вопросы