0

I have a XML like the following:

<?xml version="1.0" encoding="UTF-8"?>
<items>
        <item>
            <id>1000416</id>
            <price>9990</price>
            <stock>1</stock>
            <name><![CDATA[Benbo Mk3 Trekker Kit Trépied avec Tête B&S et sac]]></name>
            <attributes>
                <attribute datatype="text">
                    <name><![CDATA[name]]></name>
                    <value><![CDATA[Benbo Mk3 Trekker Kit Trépied avec Tête B&amp;S et sac]]></value>
                </attribute>
                <attribute datatype="text">
                    <name><![CDATA[sku]]></name>
                    <value><![CDATA[BEN107C]]></value>
                </attribute>
                <attribute datatype="numeric">
                    <name><![CDATA[price]]></name>
                    <value>9900</value>
                </attribute>
                <attribute datatype="text">
                    <name><![CDATA[manufacturer]]></name>
                    <value><![CDATA[Benbo]]></value>
                </attribute>
                <attribute datatype="text">
                    <name><![CDATA[url_key]]></name>
                    <value><![CDATA[benbo-mk3-trekker-kit-trepied-avec-tete-b-s-et-sac]]></value>
                </attribute>
                <attribute datatype="text">
                    <name><![CDATA[photo_video]]></name>
                    <value><![CDATA[Photo ]]></value>
                </attribute>
                <attribute datatype="text">
                    <name><![CDATA[includes_tripodhead]]></name>
                    <value><![CDATA[Oui]]></value>
                </attribute>
                <attribute datatype="text">
                    <name><![CDATA[material]]></name>
                    <value><![CDATA[Aluminium]]></value>
                </attribute>
                <attribute datatype="numeric">
                    <name><![CDATA[stock_lc_kroezenhoek]]></name>
                    <value>1</value>
                </attribute>
                <attribute datatype="numeric">
                    <name><![CDATA[stock_total]]></name>
                    <value>1</value>
                </attribute>
                <attribute datatype="numeric">
                    <name><![CDATA[eancode]]></name>
                    <value>123456789</value>
                </attribute>
            </attributes>
            <categories>
                <categoryid>100042</categoryid>
                <categoryid>10004332</categoryid>
            </categories>
        </item>
        <item>
            <id>1000418</id>
            <price>4896</price>
            <stock>0</stock>
            <name><![CDATA[Benbo Trekker Monopod]]></name>
            <attributes>
                <attribute datatype="text">
                    <name><![CDATA[name]]></name>
                    <value><![CDATA[Benbo Trekker Monopod]]></value>
                </attribute>
                <attribute datatype="text">
                    <name><![CDATA[sku]]></name>
                    <value><![CDATA[BEN109]]></value>
                </attribute>
                <attribute datatype="numeric">
                    <name><![CDATA[price]]></name>
                    <value>4896</value>
                </attribute>
                <attribute datatype="text">
                    <name><![CDATA[manufacturer]]></name>
                    <value><![CDATA[Benbo]]></value>
                </attribute>
                <attribute datatype="text">
                    <name><![CDATA[url_key]]></name>
                    <value><![CDATA[benbo-trekker-monopod]]></value>
                </attribute>
                <attribute datatype="numeric">
                    <name><![CDATA[stock_lc_kroezenhoek]]></name>
                    <value>1</value>
                </attribute>
                <attribute datatype="numeric">
                    <name><![CDATA[stock_total]]></name>
                    <value>1</value>
                </attribute>
                <attribute datatype="numeric">
                    <name><![CDATA[eancode]]></name>
                    <value>3987654321</value>
                </attribute>
                <attribute datatype="text">
                    <name><![CDATA[manufacturer_code]]></name>
                    <value><![CDATA[BEN109]]></value>
                </attribute>
            </attributes>
            <categories>
                <categoryid>100042</categoryid>
                <categoryid>10004329</categoryid>
            </categories>
        </item>
        </items>

Now from this XML I want to store the each attributes value in a mysql table...each value will be a column...to obtain this I have used the following code:

$values = array();
$reader = new XMLReader();
$reader->open( 'test.xml' );
$id = 'attribute';
while ($reader->read()) {
    if ($reader->nodeType == XMLReader::ELEMENT) {
        $exp = $reader->expand();
        if ($exp->nodeName == "item") {
          //  if (count($values)) print implode(" : ", $values);
            //$values = array();
        }
        if ($exp->nodeName == $id) {
            foreach ($exp->childNodes as $node) {
                if ($node->nodeName == "value") {
                    $values[] = $node->textContent;

                }
            //  $values[] = null;
            }

        }

    }

    }

if (count($values)) print implode(" : ", $values);                  

This enables me to display the values from the array separated by a : but I want to store each values of tags from the "attributes" node in a MySql table...can anyone please help me I am really struggling with this since am very new to XML programming...

Thanks in advance!

user3305327
  • 897
  • 4
  • 18
  • 34
  • please extend your question by asking a clear and specific question, and explain how you got stuck. – michi Apr 25 '15 at 14:04

1 Answers1

0

after going through the following url I have used the following code and it works for me...thanks everyone for their time...

How to use XMLReader in PHP?

$z = new XMLReader;
$z->open('test.xml');

$doc = new DOMDocument;


while ($z->read() && $z->name !== 'product');


while ($z->name === 'product')
{

    $node = new SimpleXMLElement($z->readOuterXML());
    $a = $node->EAN;
    $b = $node->Prijs;
    $c = $node->Titel;
    echo $a .$b.$c."<br />";

    $z->next('product');
}
Community
  • 1
  • 1
user3305327
  • 897
  • 4
  • 18
  • 34