whats wrong with doing it like this? InfoPath itself is just xml, xsd, xsf and xpath, exporting as xml is as simple as tieing your shoelaces. you can even export just portions, or in whole...
XPathNavigator myRoot = MainDataSource.CreateNavigator();
XPathNavigator node = myRoot.SelectSingleNode("/myFields", NamespaceManager);
StreamWriter sw = new StreamWriter(newFileName);
sw.Write(node.OuterXml.ToString());
sw.Flush();
sw.Close();