2015-04-23 2 views
0

У меня есть XML, как в следующее:извлечение данных из XML и хранение в тузде таблицу

<?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> 

Теперь из этого XML Я хочу, чтобы сохранить значение каждого атрибута в таблице MySQL ... каждое значение будет быть колонки ... для получения этого я использовал следующий код:

$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);     

Это позволяет мне для отображения значений из массива, разделенный: но я хочу, чтобы хранить каждое значение тегов из «атрибутов «узел в таблице MySql ... может кто-нибудь, пожалуйста, помогите мне, я действительно борюсь с этим, так как я очень новичок в XML программирование ...

Заранее благодарим!

+0

пожалуйста расширить свой вопрос, задавая ясный и конкретный вопрос, и объясните, как вы застряли. – michi

ответ

0

после прохождения через следующий адрес я использовал следующий код и он работает для меня ... спасибо всем за свое время ...

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'); 
} 
Смежные вопросы