Problems Importing XML Files Into Access

Iron Contributor

I'm trying to import several XML files into Microsoft access.  When I use the XML import wizard however, access imports the XML file creating multiple tables, rather than a single table where each record in the table is from one of the XML files.  Is there a way to import an XML file into a single table, rather than it creating multiple tables?

9 Replies

@JBLT-77 

 

Please clarify what, exactly, you need to work with, one XML file or multiple XML files.

 

"...access imports the XML file"

"... each record in the table is from one of the XML files" 

I have multiple xml files I need to import. They import the data into the same tables, but that’s the problem access thinks that the xml fields should be a table instead importing them as columns to a single table.
on the First import it will create the table.
on second and succeeding import there is an Option to import on Same table.

@JBLT-77 We are getting closer, thanks.

 

Each XML file is supposed to import data into a table. There are different XML files, so there is one table for each XML file, correct? Or should all of the XML files import into the same Access table? That may not be relevant to the specific problem, but it's still not quite clear how it all needs to work.

 

The problem point is that the import process creates one table for each field in the XML file. How are these XML files created? Have you independently validated that they are, in fact, well-formed XML? Is it possible that the problem is not in the import, but in the way the XML is structured? Can you open the XML files in an application like NotePad++ and verify that it is good?

 

Is it possible to share a sample of one of these XML files? 

 

What I was expecting was each file I import, is imported as a new record into an existing table that is created after importing the first xml file. I’m not familiar enough with xml file structure so it could be that the files aren’t structured in a xml format to be imported into a single table but as multiple tables, if there is such an xml structure for that. I thought the way xml structure worked was each defined field name was equivalent to a database column and the value contained within the xml name tags would be inserted as a table row. But that’s not the case I guess with how the files I was sent are importing into access. Attached is a snippet of the beginning of one of the xml files.

We can take a look at the sample, thanks. I would have been more productive to get an XML file so the text doesn't have to be copied out of a picture....
Unfortunately I can’t provide the actual xml file as it contains private business data.
If you want total control with XML you need to do it via code.
Something like that
Set xmlDoc = New MSXML2.DOMDocument

intFile = FreeFile()
Open strXMLFilename For Input As intFile
strXMLFile = input$(LOF(1), 1)
Close intFile

Set xmlDoc = CreateObject("MSXML2.DOMDocument.6.0")
xmlDoc.LoadXML strXMLFile
Then you will iterate its nodes..grab the values and place them accordingly

Try using XSL transformation. To generate one, you can try https://www.easycodeforall.com/XSLTCode.jsp and enter your current and desired XML formats there. The generator will output the appropriate XSLT, which you can use when clicking the "Transformation"-Button in the Access Import Wizard.