Lance did the work to save to XML and to drop the resulting file into
the blog's resources directory, but the work never made it's way into
a release (I dropped the ball).
I believe I wanted to expose the export feature as a button on the
Entries page. That way, you could design a query/filter and then save
the resulting entries to XML format.
- Dave
On Feb 21, 2006, at 1:24 PM, Allen Gilliland wrote:
This would definitely be a good thing to put as a general RFE, just a
basic export utility in xml format. It would be nice if there was a
standardized format to follow, which is designed to allow the user to
export/import their blog data between any blog software.
-- Allen
On Tue, 2006-02-21 at 10:16, David M Johnson wrote:
Oops. That "somebody" I mentioned was you chucks. Oh well, others
might find this useful too.
- Dave
On Feb 21, 2006, at 1:12 PM, David M Johnson wrote:
On Feb 21, 2006, at 5:39 AM, chucks wrote:
I wasn't able to find out any official resource on how one can
back-up the
Blog Posts and comments at a roller blog (say hosted at
JRoller.com). This
would be good for anybody planning to move to any other blogware.
Is there any hack available?
There are a couple of hacks, here's one:
http://blogs.sun.com/roller/page/richb?
entry=backing_up_your_roller_posts
And here's another I just recommended to somebody today...
Currently, if you don't have access to the internal Roller API and/
or the Roller database, the only way to backup a Roller blog is to
write a custom template.
Here's how you'd do it:
1 - create a new template in your blog
2 - within the template use the $pageModel object to fetch all
entries of your blog
3 - iterate through those entries to output your blog in RSS or
Atom format (example below)
4 - create your own name-spaced XML element to represent comments
within each item
5 - write a simple program that parses that and uses MetaWeblog API
to post to your new blog
For step #2 refer to the Roller macro reference
http://rollerweblogger.org/velocidoc/
For step #3 refer to the Atom or RSS spec
http://atompub.org/2005/07/11/draft-ietf-atompub-format-10.html
http://blogs.law.harvard.edu/tech/rss
For step #5 refer to the MetaWeblog API
http://www.xmlrpc.com/metaWeblogApi
For parsing RSS, see the chapter 5 examples from my book
For posting via MetaWeblog API (and Atom protocol), see the chapter
8 examples from my book:
http://blogapps.dev.java.net
- Dave
PS. you could use this template as a starting point:
$pageHelper.setContentType("application/rss+xml;charset=utf-8")<?
xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title>$utilities.textToHTML($website.name,true)</title>
<link>$websiteURL</link>
<description>$utilities.textToHTML($website.description,true)</
description>
<language>en-us</language>
<copyright>Copyright #formatDate("yyyy" $now)</copyright>
<lastBuildDate>$utilities.formatRfc822Date($updateTime)</
lastBuildDate>
<generator>Roller Weblogger #showVersion() ($rollerBuildTime:
$rollerBuildUser)</generator>
#set( $entries = $pageModel.getRecentWeblogEntriesArray
($entryCount, 'nil') )
#foreach( $entry in $entries )
<item>
<title>$utilities.textToHTML($entry.title,true)</title>
#if( $entry.link && !$entry.link.trim().equals("") )
<source url="$utilities.textToHTML($entry.link)">
$utilities.textToHTML($entry.link)</source>
#end
<description>#showEntryDescription($entry)</description>
<category>$utilities.textToHTML($entry.category.name,true)</
category>
<link>$absBaseURL$entry.permaLink</link>
<guid isPermaLink="true">$absBaseURL$entry.permaLink</guid>
#if( $website.allowComments )
<comments>$absBaseURL$utilities.textToHTML($entry.commentsLink)
</comments>
#end
<pubDate>$utilities.formatRfc822Date($entry.pubTime)</pubDate>
<dc:creator>$utilities.textToHTML($entry.creator.fullName,true)
</dc:creator>
#set( $mc_url = $entry.findEntryAttribute("att_mediacast_url") )
#set( $mc_type = $entry.findEntryAttribute
("att_mediacast_type") )
#set( $mc_length = $entry.findEntryAttribute
("att_mediacast_length") )
#if( $mc_url && $mc_length && $mc_type )
<enclosure url="$mc_url" type="$mc_type"
length="$mc_length" />
#set($mc_url = false) #set($mc_type = false) #set($mc_length
= false)
#end
</item>
#end
</channel>
</rss>