Разбор XML-файла блога с помощью Nokogiri - PullRequest
1 голос
/ 20 июля 2010

У меня есть экспортированный блоговый файл xml, и он выглядит примерно так:

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

Как мне разобраться с Нокогири и 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

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

есть предложения? : /

Ответы [ 3 ]

0 голосов
/ 20 июля 2010

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

<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 голосов
/ 31 октября 2010

Я только что наткнулся на этот вопрос. Кажется, проблема в пространствах имен 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.

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

0 голосов
/ 20 июля 2010

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

Я получаю:

 Content
 Content

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...