﻿<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>StrataFrame Forum » StrataFrame Application Framework - V1 » Business Objects and Data Access (How do I?)  » Business Objects and XML import/export</title><generator>InstantForum 2017-1 Final</generator><description>StrataFrame Forum</description><link>http://forum.strataframe.net/</link><webMaster>StrataFrame Forum</webMaster><lastBuildDate>Fri, 11 Sep 2026 10:56:08 GMT</lastBuildDate><ttl>20</ttl><item><title>Business Objects and XML import/export</title><link>http://forum.strataframe.net/FindPost7591.aspx</link><description>I am tasked with providing a means of exporting and importing records from one client to another.&amp;nbsp; I started out using the BusinessObject.CurrentDataTable.WriteXML(Filename), and using the subsequent DataSet.ReadXML(filename), and copying the data with a BusinessObject.CopyDataFrom(DataSet.Tables(0), AppedDatatoTableFromCompleteTable) method and this worked fine.&amp;nbsp;&amp;nbsp; I looked through the sample XML datasource project and it appears to be using the method I had and was working well.&lt;P&gt;Then I read the post about decrpyting XML and using the Microfour XML namespace methods to generate XML files from datasets.&amp;nbsp; With this the schema was placed in the file along with the versioning and built in encryption, so I decided to start working on switching to this method.&lt;/P&gt;Using the MicroFour.StrataFrame.XML.XMLBasics.WriteXMLFile(Dataset, filename) this seems to generate the XML file fine.&lt;P&gt;[codesnippet]&lt;FONT color=#008000 size=2&gt;&lt;/P&gt;&lt;P&gt;'-- Write DataSet to XML&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; loDS &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;New&lt;/FONT&gt;&lt;FONT size=2&gt; DataSet&lt;/P&gt;&lt;P&gt;loDS.Tables.Add(MyBusinessObject.CurrentDataTable)&lt;/P&gt;&lt;FONT color=#008000 size=2&gt;&lt;P&gt;'-- Write the DataSet to XML to the SaveFileDialog's Filename&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;P&gt;MicroFour.StrataFrame.Xml.XmlBasics.WriteXmlFile(loDS, loSaveFileDialog.FileName, &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;False&lt;/FONT&gt;&lt;FONT size=2&gt;)&lt;/P&gt;&lt;/FONT&gt;&lt;P&gt;&lt;/FONT&gt;[/codesnippet]&lt;/P&gt;&lt;P&gt;My problem comes with trying to read this back in using the ReadXMLFile method.&lt;/P&gt;&lt;P&gt;&lt;FONT size=2&gt;[codesnippet]&lt;/P&gt;&lt;P&gt;&lt;FONT color=#008000 size=2&gt;'-- Instantiate a new DS &lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; loDS &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;New&lt;/FONT&gt;&lt;FONT size=2&gt; DataSet&lt;/P&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;'-- Fill the Dataset from the XML file&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;P&gt;loDS.ReadXmlSchema(loOpenFileDialog.FileName)&lt;/P&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;'-- Declare some locals for Listing DataColumns from XML schema&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; loCol &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; DataColumn&lt;/P&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; laCols &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;New&lt;/FONT&gt;&lt;FONT size=2&gt; System.Collections.Generic.List(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Of&lt;/FONT&gt;&lt;FONT size=2&gt; DataColumn)&lt;/P&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;'-- Iterate through Table(0) and build List of DataColumns&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;For&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Each&lt;/FONT&gt;&lt;FONT size=2&gt; loCol &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;In&lt;/FONT&gt;&lt;FONT size=2&gt; loDS.Tables(0).Columns&lt;/P&gt;&lt;P&gt;laCols.Add(loCol)&lt;/P&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Next&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;'-- Read the XML file into the DataSet&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;P&gt;loDS = MicroFour.StrataFrame.Xml.XmlBasics.OpenXmlFile(&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"1.0"&lt;/FONT&gt;&lt;FONT size=2&gt;, loDS.Tables(0).TableName, loOpenFileDialog.FileName, laCols, &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;False&lt;/FONT&gt;&lt;FONT size=2&gt;)&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT size=2&gt;[/codesnippet]&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size=2&gt;When it gets to the OpnXMLFile method it checks for the version of the XML and always returns -1, and writes the XMLVersion table to the xml file with no data in the XML datatable(0) where the data was.&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size=2&gt;Before xml file&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size=2&gt;[codesnippet]&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size=2&gt;&amp;lt;?xml version="1.0" standalone="yes"?&amp;gt;&lt;BR&gt;&amp;lt;NewDataSet&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;xs:schema id="NewDataSet" xmlns="" xmlns:xs="&lt;A href="http://www.w3.org/2001/XMLSchema"&gt;http://www.w3.org/2001/XMLSchema&lt;/A&gt;" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xs:complexType&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xs:choice minOccurs="0" maxOccurs="unbounded"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xs:element name="U_NSN" msdata:CaseSensitive="False" msdata:Locale="en-US"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xs:complexType&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xs:sequence&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xs:element name="U_NSN_PK" msdata:DataType="System.Guid, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xs:element name="U_NSN_Nomenclature" type="xs:string" minOccurs="0" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xs:element name="U_NSN_Price" type="xs:decimal" minOccurs="0" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xs:element name="U_NSN_Weight" type="xs:double" minOccurs="0" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xs:element name="U_NSN_Volume" type="xs:double" minOccurs="0" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xs:element name="U_NSN_UOMFK" msdata:DataType="System.Guid, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xs:element name="U_NSN_UserID" type="xs:string" minOccurs="0" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xs:element name="U_NSN_Public" type="xs:boolean" minOccurs="0" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xs:element name="U_NSN_cncDateTime" type="xs:dateTime" minOccurs="0" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xs:element name="U_NSN_FSCFK" msdata:DataType="System.Guid, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xs:element name="U_NSN_CountryCodeFK" msdata:DataType="System.Guid, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xs:element name="U_NSN_PartialName" type="xs:string" minOccurs="0" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xs:element name="U_NSN_FullName" type="xs:string" minOccurs="0" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xs:element name="U_NSN_CON_DATETIME" type="xs:dateTime" minOccurs="0" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xs:sequence&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xs:complexType&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xs:element&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xs:choice&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xs:complexType&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xs:element&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/xs:schema&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;U_NSN&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;U_NSN_PK&amp;gt;e2579dbf-a73a-4681-bbb2-43f2c2b9eed1&amp;lt;/U_NSN_PK&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;U_NSN_Nomenclature&amp;gt;Air Conditioning equipment from iceland.&amp;nbsp; I think its just a bag of ice.&amp;lt;/U_NSN_Nomenclature&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;U_NSN_Price&amp;gt;0.8500&amp;lt;/U_NSN_Price&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;U_NSN_Weight&amp;gt;8&amp;lt;/U_NSN_Weight&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;U_NSN_Volume&amp;gt;1.252&amp;lt;/U_NSN_Volume&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;U_NSN_UOMFK&amp;gt;eaa6e172-5bc5-4e54-ac49-292618f6cf7e&amp;lt;/U_NSN_UOMFK&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;U_NSN_UserID /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;U_NSN_Public&amp;gt;false&amp;lt;/U_NSN_Public&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;U_NSN_cncDateTime&amp;gt;1800-01-01T00:00:00-06:00&amp;lt;/U_NSN_cncDateTime&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;U_NSN_FSCFK&amp;gt;982d5ae6-b301-4785-83dc-39064590f594&amp;lt;/U_NSN_FSCFK&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;U_NSN_CountryCodeFK&amp;gt;fd49f597-e560-4f15-b037-746c49357137&amp;lt;/U_NSN_CountryCodeFK&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;U_NSN_PartialName&amp;gt;1121445&amp;lt;/U_NSN_PartialName&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;U_NSN_FullName&amp;gt;4120IS1145445&amp;lt;/U_NSN_FullName&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;U_NSN_CON_DATETIME&amp;gt;2007-03-08T12:56:49.693-06:00&amp;lt;/U_NSN_CON_DATETIME&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/U_NSN&amp;gt;&lt;BR&gt;&amp;lt;/NewDataSet&amp;gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size=2&gt;[/codesnippet]&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size=2&gt;After the code runs to read the file&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size=2&gt;[codesnippet]&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;?xml version="1.0" standalone="yes"?&amp;gt;&lt;BR&gt;&amp;lt;XmlStructure&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;xs:schema id="XmlStructure" xmlns="" xmlns:xs="&lt;A href="http://www.w3.org/2001/XMLSchema"&gt;http://www.w3.org/2001/XMLSchema&lt;/A&gt;" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xs:element name="XmlStructure" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xs:complexType&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xs:choice minOccurs="0" maxOccurs="unbounded"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xs:element name="XmlVersionInfo"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xs:complexType&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xs:sequence&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xs:element name="xml_Version" type="xs:string" default="" minOccurs="0" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xs:element name="xml_ValidationKey" type="xs:string" default="" minOccurs="0" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xs:element name="xml_Comment" type="xs:string" default="" minOccurs="0" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xs:sequence&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xs:complexType&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xs:element&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xs:element name="U_NSN"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xs:complexType&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xs:complexType&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xs:element&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xs:choice&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xs:complexType&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xs:element&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/xs:schema&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;XmlVersionInfo&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xml_Version&amp;gt;1.0&amp;lt;/xml_Version&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xml_ValidationKey /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xml_Comment&amp;gt;Created on Monday, March 19, 2007 at 12:47:05 PM&lt;BR&gt;Version upgraded from 0.0.0.0 to 1.0 on Monday, March 19, 2007 at 12:47:05 PM&amp;lt;/xml_Comment&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/XmlVersionInfo&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;U_NSN /&amp;gt;&lt;BR&gt;&amp;lt;/XmlStructure&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size=2&gt;[/codesnippet]&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size=2&gt;What am I missing here?&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size=2&gt;Thanks,&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size=2&gt;Robin Giltner&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT size=2&gt;Heh, the colon-capital 'D' gets changed to a :D. Heh.&lt;/P&gt;&lt;/FONT&gt;</description><pubDate>Tue, 20 Mar 2007 11:13:14 GMT</pubDate><dc:creator>Robin J Giltner</dc:creator></item><item><title>RE: Business Objects and XML import/export</title><link>http://forum.strataframe.net/FindPost7604.aspx</link><description>Glad to help :)</description><pubDate>Tue, 20 Mar 2007 11:13:14 GMT</pubDate><dc:creator>Trent L. Taylor</dc:creator></item><item><title>RE: Business Objects and XML import/export</title><link>http://forum.strataframe.net/FindPost7603.aspx</link><description>Awesome, thank you thank you.&amp;nbsp; The ability to add version information for future structure changes and to let the user decide wether or not to encrypt was the reason for trying this.&amp;nbsp; And it works now, well of course it does, I copied the code you gave me and ran with it :-)&lt;/P&gt;&lt;P&gt;Not sure what the problem was, might have been they way I was building my ColumnStructure list, but anyway. Thanks a ton as usual.&lt;/P&gt;&lt;P&gt;Robin</description><pubDate>Tue, 20 Mar 2007 10:54:20 GMT</pubDate><dc:creator>Robin J Giltner</dc:creator></item><item><title>RE: Business Objects and XML import/export</title><link>http://forum.strataframe.net/FindPost7596.aspx</link><description>You are making it too complicated. :D&amp;nbsp; The XML tools in the framework deal in data sets, not data tables.&amp;nbsp; The reason for this is the auto-managed versioning table that resides in the data set.&amp;nbsp; So take the BO out of the forumla for a second.&amp;nbsp; If you have a data table that is in the data set that should belong to the BO then let the open of the XML.&lt;/P&gt;&lt;P&gt;[codesnippet]''' &amp;lt;summary&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ''' Writes the XML&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ''' &amp;lt;/summary&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ''' &amp;lt;param name="MyBO"&amp;gt;&amp;lt;/param&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private Sub WriteToXML(ByVal MyBO As MyBusinessObjectType)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '-- Establish Locals&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim loDS As New System.Data.DataSet()&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '-- Add the data table to the data set.&amp;nbsp; Use the CurrentView since it will respect&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '&amp;nbsp;&amp;nbsp; any filters and sorts.&amp;nbsp; Also this will prevent any object reference associations.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; loDS.Tables.Add(MyBO.CurrentView.ToTable("MyTableName"))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '-- Write the XML file (Add a True to the end for encryption)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MicroFour.StrataFrame.Xml.XmlBasics.WriteXmlFile(loDS, "c:\temp\MyXML.xml")&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ''' &amp;lt;summary&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ''' Opens the XML file and moves the data in the XML file into the BO&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ''' &amp;lt;/summary&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private Sub OpenAndLoadBO()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyBO.CopyDataFrom(OpenXMLTableAndRetrieveDataTable(), StrataFrame.Business.BusinessCloneDataType.ClearAndFillFromCompleteTable)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ''' &amp;lt;summary&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ''' Reads the data from the XML file and returns the data table&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ''' &amp;lt;/summary&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ''' &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private Function OpenXMLTableAndRetrieveDataTable() As System.Data.DataTable&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '-- Establish Locals&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim loDS As System.Data.DataSet&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '-- Open the XML file and read it into a data set (Add a True at the end for decryption)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; loDS = MicroFour.StrataFrame.Xml.XmlBasics.OpenXmlFile("1.0", "MyTableName", "c:\temp\MyXML.xml", CreateMyDataStructure())&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '-- Pull out the only table that you need&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return loDS.Tables("MyTableName")&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Function&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ''' &amp;lt;summary&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ''' Creates the expected data structure&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ''' &amp;lt;/summary&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ''' &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private Function CreateMyDataStructure() As System.Collections.Generic.List(Of System.Data.DataColumn)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '-- Establish Locals&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim loReturn As New System.Collections.Generic.List(Of System.Data.DataColumn)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '-- Create the data structure to be returned&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; loReturn.Add(MicroFour.StrataFrame.Xml.XmlBasics.CreateXmlDataColumn("MyField", GetType(Integer), 0))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; loReturn.Add(MicroFour.StrataFrame.Xml.XmlBasics.CreateXmlDataColumn("MyName", GetType(String), ""))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return loReturn&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Function[/codesnippet]&lt;/P&gt;&lt;P&gt;The above code should give you a basic understand of how to use the XMLBasics class as it relates to opening and&amp;nbsp;writing XML files.&amp;nbsp; This class exists to make it easy to encrypt, decrypt, and update the data structures of an XML file.&amp;nbsp; If you do not have any of these needs that this class may be overkill for what you are trying to accomplish.</description><pubDate>Mon, 19 Mar 2007 16:04:34 GMT</pubDate><dc:creator>Trent L. Taylor</dc:creator></item><item><title>RE: Business Objects and XML import/export</title><link>http://forum.strataframe.net/FindPost7594.aspx</link><description>Ok.&amp;nbsp; I took all references to the Datatable by INdex out, and just used the DataTable name ("U_NSN").&lt;/P&gt;&lt;P&gt;I still seem to be having a problem on reading the XML file.&amp;nbsp; If the version information isn't present when it tries to read in the XML file, it generates the version block, and its schema, but also removes the schema information for my U_NSN data table that was there, and removes the data for the U_NSN data table.&lt;/P&gt;&lt;P&gt;If I take the version information from the resulting XML file, and the data and schema from the original XML file and piece them together, so that is has schema info for both the Version block, and the U_NSN data table, as well as the data for the Version block and U_NSN block, it works great.&lt;/P&gt;&lt;P&gt;Do I need to be generating the version information when I generate the XML file containing the U_NSN data/schema?&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Robin Giltner</description><pubDate>Mon, 19 Mar 2007 14:57:47 GMT</pubDate><dc:creator>Robin J Giltner</dc:creator></item><item><title>RE: Business Objects and XML import/export</title><link>http://forum.strataframe.net/FindPost7592.aspx</link><description>When you use the XML namespace to create and write the XML files, it adds a versioning table within the data set so that you can actually upgrade the structure of an XML file...just like the DDT.&amp;nbsp; This allows existing XML files with a particular structure to have new columns added or existing ones removed.&amp;nbsp; So we add a versioning table which occupies the zero index position.&lt;/P&gt;&lt;P&gt;This is the table you are pulling out.&amp;nbsp; You need to pull out your table which would be something like this:&lt;/P&gt;&lt;P&gt;[codesnippet]loDS.Tables(1)[/codesnippet]&lt;/P&gt;&lt;P&gt;If you pull the zero index you will always get the versioning table.</description><pubDate>Mon, 19 Mar 2007 13:12:03 GMT</pubDate><dc:creator>Trent L. Taylor</dc:creator></item></channel></rss>