2010-10-17 5 views
1

Je suis à la recherche d'un moyen pour analyser et insérer suivant les données de chaîne XML à des tables MySQL en utilisant php .. s'il vous plaît aiderVous cherchez un moyen pour analyser et insérer chaîne XML dans MySQL en utilisant 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> 

J'ai deux tables, une pour les marques et autres modèles .. besoin d'insérer toutes les données disponibles au format XML ci-dessus pour ces tables ..

Merci à l'avance
Ansar

+3

Pour l'analyse des données XML, utilisez DOM: http : //www.php.net/manual/fr/book.dom.php –

+0

Pour l'insertion de données dans une base de données, PDO est sans doute le meilleur choix de nos jours: http://php.net/manual/fr//book.pdo .php –

+1

@Pekka pour MySQL le meilleur choix est mysqli (si vous n'avez pas besoin de l'abstraction PDO fournit) – Gordon

Répondre

3

Pour collecter les données à partir de XML et les enregistrer dans une base de données, deux étapes doivent être effectuées. D'abord, vous devez lire le XML et le stocker dans certaines structures de données PHP. Deuxièmement, vous devez stocker ces structures de données dans une base de données.

En supposant que vous utilisez un PHP décemment frais (> = 5) que vous venez:

donc commencer par la lecture des données avec un analyseur XML. Et une fois que vous avez fait cela, continuez avec une bibliothèque MySQL. Afin de stocker des données dans une base de données MySQL, des connaissances SQL rudimentaires sont nécessaires. Consultez par exemple le MySQL tutorial de W3School.

Bien sûr, vous devez effectuer le codage final vous-même. Mais tout comme une simple proposition structurelle, votre script pourrait ressembler à ceci:

$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

Merci pour toutes les réponses .. Je l'ai fait en utilisant 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

L'utilisation de 'DOMDocument :: loadXML' créera une notice' E_STRICT'. – Gordon

+0

oui je l'ai vu .. et changé le code en $ xmlDoc = new DOMDocument(); $ xmlDoc-> loadXML ($ xmlString); –

Questions connexes