Well, took about 5 hours of coding but I got a little tool together to convert my old posts from www.mostllyucid.co.uk (currently dead but it will eventually point here). Nice to get them all back up again!
I will be playing around with the site for the next few days so there will be a bit of churn. It was nice to get to do some coding again...not the prettiest code but hey it worked!
Just for the hell of it, here's the code for the tool...
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Collections;
using System.Xml;
using System.IO;
namespace BlogTranslator
{
   class Program
   {
       static void Main(string[] args)
       {
           Program p = new Program();
           p.StartTranslate();
       }
       public void StartTranslate()
       {
           using(SqlConnection scon= new SqlConnection("Data Source=MISTI;Initial Catalog=mostlylucid;Integrated Security=True"))
           {
               Dictionary categoryDict = new Dictionary();
               SqlCommand categoryComm = new SqlCommand("SELECT CategoryID, Name FROM           cs_Post_Categories", scon);                SqlCommand scomm = new SqlCommand("SELECT       PostID, ThreadID, ParentID, PostAuthor, UserID, SectionID, PostLevel, SortOrder, Subject, PostDate, IsApproved, IsLocked, IsIndexed, TotalViews, Body,                         FormattedBody, IPAddress, PostType, EmoticonID, PropertyNames, PropertyValues, SettingsID, AggViews FROM           cs_Posts WHERE       (ParentID = PostID)ORDER BY PostDate", scon);
               SqlCommand postCatComm = new SqlCommand("SELECT       PostID, CategoryID FROM cs_Posts_InCategories ORDER BY PostID", scon);
               scon.Open();
               using (SqlDataReader dr = categoryComm.ExecuteReader())
               {
                   while (dr.Read())
                   {
                       categoryDict.Add((int)dr["CategoryID"],(string)dr["Name"]);
                   }
               }
               Dictionary postCat = new Dictionary();
               using (SqlDataReader dr = postCatComm.ExecuteReader())
               {
                   StringBuilder sb = new StringBuilder();
                   int currPostId = 0;
                   while (dr.Read())
                   {
                       int thisPost = (int)dr[0];
                       if(thisPost != currPostId)
                       {
                           postCat.Add(currPostId, sb);
                           if (currPostId > 0)
                               sb = new StringBuilder();
                           currPostId = thisPost;
                       }
                          sb.AppendFormat("{0};", categoryDict[(int)dr[1]]);                    }
               }
               using (SqlDataReader dr = scomm.ExecuteReader())
               {
                   DateTime currDay = DateTime.MinValue;
                   StringBuilder sp = new StringBuilder();
                   while (dr.Read())
                   {
                       DateTime postDate = (DateTime)dr["PostDate"];
                       DateTime thisDay = postDate.Date;
                       if (currDay != thisDay)
                       {
                           if (currDay > DateTime.MinValue)
                           {
                               sp.Append("");
                               using (TextWriter tw = File.CreateText(string.Format("c:\\DumpTest\\{0}.dayentry.xml", currDay.ToString("yyy-MM-dd"))))
                               {
                                   tw.Write(sp.ToString());
                               }
                           }
                            sp = new StringBuilder(" xmlns:xsd=\" xmlns=\"urn:newtelligence-com:dasblog:runtime:data\">");                            sp.AppendFormat("{0}", thisDay.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK"));
                           currDay = thisDay;
                       }
                       sp.AppendFormat("{0}{1}{2}{3}{4}", XmlEncode(dr["Body"] as string), ((DateTime)dr["PostDate"]).ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK"), ((DateTime)dr["PostDate"]).ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK"), Guid.NewGuid().ToString(), (string)dr["Subject"]);
                       int postId = (int)dr["PostId"];
                       if(postCat.ContainsKey(postId))
                       {
                       sp.AppendFormat("{0}", postCat[postId].ToString().TrimEnd(new char[1]{';'}));
                       }
                       else
                       {
                           sp.Append("");
                       }
                       sp.Append("admintruetruetruetrue ");                    }
               }
               Console.Read();
           }
       }
       public static string XmlEncode (string s)
       {
           StringBuilder output = new StringBuilder ();
           foreach (char c in s)
               switch (c) {
               case '&' :
                   output.Append ("&");
                   break;
               case '>' :
                   output.Append (">");
                   break;
               case '<' :
                   output.Append ("<");
                   break;
               case '"' :
                   output.Append (""");
                   break;
               default:
                   if ((int) c > 128) {
                       output.Append ("");
                       output.Append (((int) c).ToString ());
                       output.Append (";");
                   }
                   else
                       output.Append (c);
                   break;
               }
           return output.ToString ();
       }
   }
}