寻找一种方法来解析并使用php将XML字符串插入MySQL

时间:2010-10-17 16:25:45

标签: php mysql xml xml-parsing

我正在寻找一种方法来解析并使用php将以下XML字符串数据插入到MySQL表中..请帮助

<?xml version="1.0" encoding="UTF-8"?><brandModelListResponse>  
<brand ID="Nokia" Description="Nokia">  
    <model ID="N93i" OS="Symbian" OSVersion="SymS60V3" image="nokia-n93i.gif">N93i</model>  
    <model ID="N95" OS="Symbian" OSVersion="SymS60V3" image="nokia-n95.gif">N95</model>  
    <model ID="Nokia300" OS="Symbian" OSVersion="SymS60V3" image="">Nokia300</model>  
</brand>
<brand ID="Motorola" Description="Motorola">  
    <model ID="E1070" OS="J2ME" OSVersion="Motorola J2ME A.5" image="'E1070.jpg">E1070</model>  
    <model ID="E398" OS="J2ME" OSVersion="Motorola J2ME A.1" image="">E398</model>  
</brand>  

我有两个表,一个用于品牌和其他模型..需要将上面xml中可用的所有数据插入到这些表中..

提前致谢
安萨

2 个答案:

答案 0 :(得分:3)

为了从XML收集数据并将其保存到数据库中,需要执行两个步骤。首先,您需要读取XML并将其存储到某些PHP数据结构中。其次,您需要将这些数据结构存储到数据库中。

假设您正在使用一个相当新鲜的PHP(&gt; = 5),您只需:

首先使用XML解析器读取数据。一旦完成,继续使用MySQL库。为了将数据存储到MySQL数据库,需要一些基本的SQL知识。例如咨询W3School的MySQL tutorial

当然,您需要自己进行最终编码。但就像一个简单的结构提案一样,你的脚本可能看起来像这样:

$xml_data = file_get_contents('file.xml');
$xml = new SimpleXMLElement($xml_data); 

foreach ($xml->item as $item)
{
  $sql = 'INSERT INTO table (...) VALUES ('.$item['name'].');';
  mysql_query(...); //
}

答案 1 :(得分:1)

感谢所有回复..我使用php DOM

做到了
$xmlDoc = DOMDocument::loadXML( $xmlString );
//Get all brands 
$brand = $xmlDoc->getElementsByTagName('brand');

for($i=0; $i <= $brand->length-1; $i++)
{
  //get each brands data and insert to MySQL
  $brandid = insertBrands($brand->item($i)->getAttribute('ID'), $brand->item($i)->getAttribute('Description') );

  //get models for this brand
  $model = $brand->item($i)->getElementsByTagName('model');
  for($j=0; $j <= $model->length-1; $j++)
  {    
    //get models data and insert to MySQL
    insertModles($brandid,  $model->item($j)->getAttribute('ID'), $model->item($j)->getAttribute('OS')
      , $model->item($j)->getAttribute('OSVersion'), $model->item($j)->getAttribute('image') );
  }  
}