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,不知道一般都用什么东西。。。
本文基于 署名-非商业性使用-禁止演绎 2.5 中国大陆 发布
9 COMMENTS >>LEAVE<<
-
以前也想自己写一个来着,后来看了habari的代码就放弃了。。。
-
我之前曾经写过一个wordpress导入到自己的blog的,用的是SQLAlchemy。
总是用不惯ruby这语言,个人还是倾向于python。 -
对了,我想找本比较好的ruby的书系统地学,有什么好推荐?
rail没admin脚手架,估计写后台会非常吃力。 -
@HicroKee
Ruby的书吗,我是看的Programming Ruby,还不错。。。
不过我感觉有一本The Ruby Way就够了,这两本书一直都随时拿来查东西 -
@HicroKee
ruby很漂亮,不过可用的库比python要少很多。。。
-
@wayne
这个我也感觉没什么用处,不过反正我现在是闲人
-
@ABitNo
要真说漂亮,我觉得ruby在perl和python之间,它内置函数的命名方式让我很无语,我还是喜欢符号少点的python。
-
@hicrokee
不参与语言争论。。。
哈哈。。。 -
@ABitNo
刚把python看完,写实用程序特别方便,有空再搞下ruby,嘻嘻~记得一个ror的blog程序,叫啥忘记了~可以找来参考下结构什么的