mercredi 5 août 2015

XML to MySQL when xml file has multiple matchin fields


I've been doing some work on an XML to MYSQL using loadXML. I have been successful with these in the past. The difference with the latest effort is that we have multiple occurunces of a fieldname in the MySQL. A sample of this is below:

<row>
<pictures>
        <picture name="Photo 1">
          <filename>image1.jpg</filename>
        </picture>
        <picture name="Photo 2">
          <filename>image2.jpg</filename>
        </picture>
        <picture name="Photo 4">
          <filename>image3.jpg</filename>
        </picture>
        <picture name="Photo 3">
          <filename>image4.jpg</filename>
        </picture>
        <picture name="Photo 7">
          <filename>image5.jpg</filename>
        </picture>
        <picture name="Photo 6">
          <filename>image6.jpg</filename>
        </picture>
        <picture name="Photo 5">
          <filename>image7.jpg</filename>
        </picture>
        <picture name="Photo 8">
          <filename>image8.jpg</filename>
        </picture>
        <picture name="Photo 9">
          <filename>image9.jpg</filename>
        </picture>
      </pictures>
</row>

I need to import this into a MySQL table with the fields:

picture1 picture2 picture3 picture4 picture5 picture6 picture7 picture8 picture9

As you can see, the 'name' attribute doesn't necessarily occur in the correct order, so I need them to simply be inserted in order. So the first to go to picture1, the second to picture2 etc..

What is currently being achieved is that I always end up with the last entry in the list being in the table. This is I assume because the filed is being overwritten each time.

Any ideas how to achieve this? I have found similar queries to this but no answers as yet and have been looking for a good while. The rest of the file is loading fine as they have unique fieldnames and can easily be mapped to a MySQL column, but I am struggling with this one.

Any help appreciated.



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire