今天(昨天写好,本来打算在wplog上发的,但那个DH空间老是503死活发不了,只好发到这里了。)帮一位网友将oblog备份xml文件转换成适用于wordpress2.0 import的(伪)rss文件。
将此格式写出,方便大家搬家到wordpress。
<item> <title>标题</title> <pubdate>日期</pubdate><!-- post的日期,可选 --> <dc :date>备选日期</dc><!-- pubdate的备选项。如果两个都没有,将使用导入时日期时间 --> <category>目录</category><!-- post的目录,可选。 --> <dc :subject>备选目录</dc><!-- category的备选项。如都无,使用options中的Default post category --> <guid .+?>post的permalink</guid><!-- 可选 --> <content :encoded>内容</content> <description>备选内容</description> </item>
由此,能用于wordpress2.0 import的最简xml格式为:
既然知道了import所需文件的格式,转换工作也就变得简单了。
当你有其他blog的备份xml文件时,通过记事本等工具将相应内容的标签改为所需标签即可!
例如oblog:
1、打开oblog的备份文件
2、在编辑处选择”替换”
3、在相应的位置填上适当的内容(oblog为:log替换为item,]]> 替换为 ]]></content>,<![CDATA[#isubb 替换为 <content:encoded><![CDATA[),按”全部替换”
4、到了此步,基本已经完成。但oblog备份的”post内容”是没有任何html标签格式的,就这样导入,blog上显示必定成一团。这时我们可以写一小段php代码,使post内容具有一定的格式(下列php代码可在”post内容”分段处添加<br />):
< ?php $xml = ""; $f = fopen( 'oblog.xml', 'rb' ); //oblog.xml为刚才转换后的oblog备份文件 while( $data = fread( $f, 4096 ) ) { $xml .= $data; } fclose( $f ); preg_match_all( "/\<item\>(.*?)\< \/item\>/s", $xml, $items ); foreach( $items[1] as $item ){ $item = str_replace ("\r\n", '<br />', $item); echo '<item>'.$item."</item>\r\n"; } ?>
5、将上面代码保存为php文件,运行之,将生成文档保存为xml文件,到此时转换完成!
哦,对了。oblod备份的编码为“gb2312”,转成“UTF-8”,只需在记事本中“另存为”,然后把编码设为“UTF-8”后保存就行了。
[…] 分类里 然后 你就要不停的整理。。。。 参考文章:冰古的《wordpress2.0 rss import文件分析及oblog导入》 Posted in 技术|共享 […]
发不了尖括弧?
</content:encoded>
不是</content>
LZ漏了一点
要不导进去是没有内容的
第三应该是这样的:
当时不知道为什么就把后面那个:encoded漏掉了
不好意思,我再补充一下:
你说的替换第三种:
冰古,你好,因为以前写的博是以oblog程序搭建的,所以一直在想找这样的能将OBLOG导入到WP的方法,不过今天照你所说的做了,导入成功,但是每篇文章只有题目而没有内容,这是怎么回事啊?望赐教!
[…] oblog的生之逢时,使之成为最普遍的BSP搭建系统。这几天一直考虑帮一位同学把数据从他的oblog转入wordpress。网络上最容易搜索到的是冰古写的一篇教程,但照着做了结果只导入题目却不能显示内容。在转悠一圈没有找到直接的转换工具后,决定自己依葫芦画飘,比较一下二者rss文件的结构。 用oblog自带的功能备份日志以xml格式导出(最好转换成UTF-8),用写字板打开,现在需要改动以下几处: log替换为item 替换为 +0000 ]]>替换为]]> […]
嗯,id缓存是数据库的。
id缓存其实应该是数据库的,因为对于自动增长的字段数据库会记住下一个值应该是什么。而wp的导入问题是在导入程序上,因为数据库直接操作insert不会不连续,用发post的UI操作也不会不连续,就是导入的时候发生不连续。
@WindWood,
的确是这样的。
wordpress好像对id有缓存的,即使你删除了原来的post(or page),增加post(or page)时,它还是从原id号递加的。当然不是没有办法解决的,参照这篇post -> 让comments的id号连续起来
当然我这篇post只是说明一下思路,没有考虑id的顺序问题。
关于导入时实现文章id号与以前的一致
原先指望用来控制文章id号与之前文章的一致,可是后来发现,wp的rss导入程序还是完全根据xml的存储顺序递增(如果错了,请指正)。因此专门写了一个php程序,将原先的233条记录的xml补充成450条记录的xml:将xml导入DOM;然后根据guid为下标将每一个item存入一个数组;接着遍历数组,创建新的空白item填充空的数组单元;最后删除所有DOM里的item,从数组里依序appendChild到item。把DOM保存成新的xml就成功了。
❓ 问题来了,在进行导入的时候,导入的文章会从3开始编号(如果安装时不创建样例page,则从2开始编号)。直接数据库操作,id是对的,可如果通过源代码里$wpdb->query执行操作完,得到的id就是错的了。
目前还是没明白该如何完美的解决这个问题。只能用这样的方案:首先取消安装时自动安装post和page,其次将xml编号为1的文章去掉,然后导入xml,最后通过mysql直接添加第一篇文章。
[…] 冰古blog查看数最多的2006年的posts是: 1、wordpress2.0 rss import文件分析及oblog导入 (3498 views) 2、昨天阅读 (3364 views) 3、更新blogbus to wordpress转换程序 (1408 views) 4、我使用的plugins (1114 views) 5、从blogbus跳转到WordPress (916 views) Tags:mysql , proxy , 总结 […]
[…] http://bingu.net/blog/326/wordpress2-rss-import-file-format-and-oblog-import/ This entry is filed under 未分类. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site. Leave a Reply […]
[…] Posted in Tech articles | Trackback | del.icio.us | Top OfPage […]
email一份给我吧。
zhongygah@gmail.com
能否把你的Gtalk/MSN给我,我们直接交流。好吗?
>>>>> POST 443475 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Present!
2004-05-12 03:40:36
————————————————————————
两份特别的礼物,really a world full of uncertainty and coincidence.
>>>>> POST 443469 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
情深说话未曾讲
2004-05-22 21:20:50
————————————————————————
这个名字应该是。。。
以上,“Present!”是标题,然后是时间,然后下面的是内容
thisiswiki,
你可否发一份歪酷的备份文件给我呢?
因为我没用过歪酷的blog。
冰古能不能提供一下歪酷blog的搬迁呢?它们导出的格式是txt档的,但是没有如oblog般的中间字符。
WindWood,
谢谢指正
id号好像比较难实现吧,因为导入时是按导入顺序递加id的。
除非你的备份是顺序的,wp里也没有其他post。
很感谢,参考你的格式,可以成功转化我的网页备份了。
开始遇到问题:rss导入的时候,rss里的文章时间是
August 26, 2003 11:31 PM
可是导入后在系统里看到的文章时间就是
2003-08-26 3:31:00 pm了。
后来看了一下源代码,似乎和
$post_date = gmdate(‘Y-m-d H:i:s’, $post_date);
有关系,把gmdate改成date就好了,呵呵。
现在唯一的缺憾就是如何让文章保持原来的文章号了。
[…] 最后,这样导入后还是有问题,一般是日志的第一段丢失,以及最后加上了"]]>" 等等。要解决这个问题只能先修改RSS备份文件,参考这里: http://bingu.net/blog/326/wordpress2-rss-import-file-format-and-oblog-import/ 当然,原来水木日志上的一些字体和颜色设置,导入到都实效了,这个也没辙的啦。 期间发现,my donews 的wordpress系统也是支持导出的,见这里: http://my.donews.com/ak47/2006/09/12/mydonews_export/ […]
链接叉烧包 2006.5.17
冰古分析了wordpress2.0 rss import文件及oblog导入
…
不好意思啊,因为我把adsl停了,现在上网极不方便,你所说的情况现在可能不能帮你解决。
可能是第一行代码中多了一个空格(就是?号后的空格),你删掉试试。:wink:
为什么我运行这段php代码时是直接显示代码的内容呢?
运行你的另外一个blogbus2wp的程序是因为你打包好的,就很正常
[…] wordpress2.0 rss import文件分析及oblog导入。 […]
怪我没有讲清楚,那步有三个地方要改:
log 替换为 item
]]> 替换为 ]]></content>
<![CDATA[#isubb 替换为 <content:encoded><![CDATA[
抱歉,我还是有很多不明白的地方。是不是只需要替换log到item?
因为我的xml备份文件中有些url里面包含了log这个字符,所以我替换的时候用的是到和到,但是导入wp之后,出现的问题是,只有标题,而没有内容。。。