Rails导入Wordpress的xml备份

最近在用rails作一个blog系统,不要说我重复发明轮子什么的,就像学程序的人一开始都喜欢对世界说声hello一样,学rails的我就想开发个blog来练手。

话说开发个blog也是相当不容易的,之前虽然把《Agile Web Development With Rails》给看了将近两遍,还看完了《Programming Ruby》和《The Ruby Way》,可是真作起东西来就不是那么个事了。

我做个blog是打算自己拿来用的,所以也想要把在WP上这些文章给导入进去。RSS的内容不够全面,也考虑过直接从数据库来导入的,再就是解析WP后台export出的xml了。不知道一般的方法是怎么做的,我是选择的第三者。。。

解析xml可以用Ruby的标准库REXML,不过效率不是一般的低啊,当然解析我这种小博客的xml是没问题的。最后还是选择了最快的libxml2的ruby绑定(这些都是The Ruby Way上推荐的)。

def import(filename, &block)
  doc = Document.file(filename)
  doc.find("//item[count(content:encoded)=1]").each do |item|
    if (con = item.find_first("content:encoded").content).strip.size > 0
      yield item.find_first("title").content, con
    end
  end
end

The Ruby Way上说libxml-ruby并不很像Ruby的风格,不过我没什么感觉,估计是自己的代码本来就不是Ruby风格。

上面的代码只是简单的取了标题和内容,细节问题就多了去了。可以考虑参考下WP自己的导入函数,不过我现在还没看。。。

导入之后还有个问题就是文章内容的格式化,这真是个体力活啊,为了与WP保持一致,就参照wp-includes/formatting.php里面的函数改写成ruby的,总体效果还是不错的。。。

另一个比较大的问题是一些插件产生的内容不能展示了,我最在乎的就是wp-syntax語法高亮的效果。wp-syntax利用的是GeSHi,我很喜欢它产生的显示代码,不过似乎只有PHP版本的。

然后又找了一些Client端的javascript库,感觉效果不好。。。

最后还是想用强大的ultraviolet,不知道一般都用什么东西。。。

9 COMMENTS >>LEAVE<<

  1. wayne

    以前也想自己写一个来着,后来看了habari的代码就放弃了。。。

  2. HicroKee

    我之前曾经写过一个wordpress导入到自己的blog的,用的是SQLAlchemy。
    总是用不惯ruby这语言,个人还是倾向于python。

  3. HicroKee

    对了,我想找本比较好的ruby的书系统地学,有什么好推荐?
    rail没admin脚手架,估计写后台会非常吃力。

  4. ABitNo
    @HicroKee

    Ruby的书吗,我是看的Programming Ruby,还不错。。。
    不过我感觉有一本The Ruby Way就够了,这两本书一直都随时拿来查东西

  5. ABitNo
    @HicroKee

    ruby很漂亮,不过可用的库比python要少很多。。。

  6. ABitNo
    @wayne

    这个我也感觉没什么用处,不过反正我现在是闲人

  7. hicrokee
    @ABitNo

    要真说漂亮,我觉得ruby在perl和python之间,它内置函数的命名方式让我很无语,我还是喜欢符号少点的python。

  8. ABitNo
    @hicrokee

    不参与语言争论。。。
    哈哈。。。

  9. kangzj
    @ABitNo

    刚把python看完,写实用程序特别方便,有空再搞下ruby,嘻嘻~记得一个ror的blog程序,叫啥忘记了~可以找来参考下结构什么的

LEAVE A RESPONSE >>CANCEL<<

loader