Your TZID looks incorrectly placed. You should be including them in the DTSTART and DTEND lines like this:
DTSTART;TZID=Pacific/Honolulu:20110628T140000
DTEND;TZID=Pacific/Honolulu:20110628T140000
(Be aware: leave 'Z' 's off the end of timestamps unless your time is Zulu time = GMT)
You should add a SEQUENCE:xxx where xxx is a number that increments each time the ics is updated. E.g.
SEQUENCE:0
I did manage to get this to work (it's quirky) and had the same issue with only single events from my multiple event ics file getting imported. The best trick (alluded to elsewhere) is to get an exported ics file out of Google and then clone it.
I ended up creating two separate ics file generators - one for iCal (easy!) and one for Google (hard). Maybe a third is needed for Outlook.
Soon you should hit the next issue which is that Google require you specify the timezone for the ICS file and each event which makes coding your app much more complex. Apple iCal by comparison lets your app publish "floating times" which are assumed to be local.
There's a bunch of ics file validation tools you might try like this one which can be really helpful...
http://icalvalid.cloudapp.net/
Caveat: Files that pass this validation tool still fail with Google. Google should really create it's own ics validation tool.
[waiting to see how many down arrow reps I get for this post!]
Best Answer
Someone made a Perl script to convert xml calendars to ICS called grindstone2ics.txt. The instructions for using this script is found in this guide. When you're successful converting it to ICS, you can now import it in your Google Calendar.