2010-10-17 32 views
1

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

<?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提供的数据插入到这些表..

在此先感谢
安萨尔

+3

它解析XML数据一样,使用DOM:HTTP ://www.php.net/manual/en/book.dom.php – 2010-10-17 16:28:30

+0

为了将数据插入数据库,PDO可以说是当今最好的选择:http://php.net/manual/en//book.pdo .php – 2010-10-17 16:29:00

+1

@Pekka for MySQL最好的选择是mysqli(如果你不需要PDO提供的抽象) – Gordon 2010-10-17 17:44:57

回答

3

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

假设你使用的是体面新鲜PHP(> = 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

感谢所有的答复..我使用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')); 
    } 
} 
+0

使用'DOMDocument :: loadXML'将创建一个'E_STRICT'通知。 – Gordon 2010-10-17 17:46:14

+0

是的,我看到了..并将代码更改为$ xmlDoc = new DOMDocument(); $ xmlDoc-> loadXML($ xmlString); – 2010-10-19 18:33:17

相关问题