The conventional wisdom is to use Linq to stream XML data. Note this article. I have never used Linq and have heard that it's slow for this; nonetheless, that's one option.
Adam Aspin has a good way to do this using the SQLXML Bulk Loader[/url]. I did this a very long time ago and it seemed to work well. I was looking through the article I just posted and noticed this line:
SQLXML Bulk Loader is best used in the following situations:
...When the XML source structure is relatively simple.
Since you're dealing with a complex XML structure you may want to first transform the XML into a less complex structure using XSLT. SSIS has an XSLT transform task[/url]. If you are not familiar/comfortable with XSLT post some sample XML with the desired results here and I can show you how to do it.
-- Itzik Ben-Gan 2001