Re: Import values from XML file [message #177424 is a reply to message #176194] |
Tue, 27 March 2012 17:26 |
seeWebInstead
Messages: 14 Registered: October 2010
Karma:
|
Junior Member |
|
|
>> I've an XML file with this structure
(structure snipped)
>> can you tell me how can I save each row in my DB?
>> I don't know how to create a function for read all values and save in
>> DB table
> From: Hans Olo <doc...@vaderlishious.com>
> I do this quite often, and use PHP's DOM functions to read the .xml
I agree, with one additional suggestion later below.
> http://php.net/manual/en/book.dom.php
Note that for this purpose of reading an existing XML file, most of
that manual can be ignored. All you need are the methods to tell
the children of a given node, and the type and (text) contents of
each node. All the modification methods are moot to your needs.
> Once you can read through the .xml file it's fairly basic how to
> insert into a table.
Now here's my additional suggestion: The XML DOM parser merely
validates that the file is valid XML, and converts it into a parse
tree. It doesn't verify that the structure (tree = DOM) matches
what you expect for your application. IMO it's dangerous to
traverse the tree node by node, copying data directly into DB rows,
because if there's any mistake in the XML, you've already blindly
copied earlier data into tables and thus have a table that isn't
completely updated, i.e. is an inconsistent mess. So what I do
instead is to validate the *entire* DOM node by node, copying all
the data into a tree o nested associative array. If I discover a
mistake in the structure after I've built part of the tree, no
trouble, I "die" and the nested associative array is discarded, and
the DB table is left exactly as it was at the start. If the
validation process runs to completion, then I know the tree is
entirely correct, and *then* I can copy the data from the nested
associative array into the DB tables, after which the DB tables
will again be in a consistent state.
It's an extra step the way I do it, but I believe it's safer.
But it's your choice whether you do that or not.
Google-groups-search-key: imtrgfdi
|
|
|