|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre du Club
![]() Inscription : février 2009 Messages : 150 ![]() |
Bonjour,
j'essaye actuellement de parser un fichier xml en évenementiel avec php. Voici par exemple (faisons simple) le contenu du fichier xml nommé fichier.xml : Code :
Pour parser ce fichier, càd récupérer les noms des balises (racine, id_ville, nom, codePostal) et les données des balises (1, Paris, 75001), voici mon script tout simple : Code :
De plus j'ai une table mysql nommée ville dont les colonnes ont les memes noms que les noms des balises ouvrantes du fichier xml, à savoir : ville --------- id (auto-increment) nom (varchar) codePostal (int) Et moi ce que je veux c'est de mettre un bout de code qui manque au script et qui permet d'insérer la donnée dans la bonne colonne de la table ville en fonction du nom de la balise ouvrante, du genre : si le nom de la balise ouvrante est égal à id, alors la donnée qui se trouve entre les balises <id></id> sera enregistré dans la colonne id de la table ville, sinon si le nom de la balise ouvrante est égal à nom, alors la donnée qui se trouve entre les balises <nom></nom> sera enregistré dans la colonne nom de la table ville. Mais je ne sais pas comment l'intégrer dans le script. Avez-vous une idée ? Merci d'avance, cordialement. |
||||
|
|
00
|
|
|
#2 |
|
Membre régulier
![]() Étudiant Inscription : juin 2008 Messages : 70 ![]() |
Si tu veux pouvoir traiter tes requêtes SQL en étant sûr de bien avoir parser tes balises et ta valeur, tu peux peut-être ajouter des variables ou un tableau avec une portée globale (le mal !) afin de remplir tout ça à chaque itération de ton while()...
Tu pourras ensuite faire tes requêtes si xml_parse() fonctionne... Sinon, ton problème peut se résoudre assez facilement sans utiliser les handlers et plus proprement qu'avec des globals ou aussi en passant par la POO... |
|
00
|
|
|
#3 |
![]() ![]() Inscription : septembre 2010 Messages : 7 116 ![]() |
utilise SimpleXML ça sera plus ... simple
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() Inscription : février 2009 Messages : 150 ![]() |
Bonjour
et merci pour vos réponse. Pour simpleXML, je l'ai déjà essayé, mais ça n'a pas marché sur les fichiers xml volumineux (car mon fichier xml fait 12 Go). En effet simpleXML stocke d'abord toutes les données du fichier xml dans une variable avant de parser. Et si la RAM n'est pas suffisante (cad si RAM inférieur à 12 Go de fichier xml), alors le processus de chargement du fichier xml est interrompu. C'est pour cette raison que j'utilise le parsage événementiel et non le parsage DOM. Quand à la solution de Alcid__, je ne vois pas comment, à moins que vous avez des exemples . Une idée ? Merci d'avance, cordialement. |
|
|
00
|
|
|
#5 |
![]() ![]() Inscription : septembre 2010 Messages : 7 116 ![]() |
je comprend mieux, en stream c'est meiurs de faire du SAX, par contre tu peux mélangé les deux, SAX + SimpleXML, quand tu récupères ta "portion" tu la met dans un objet SimpleXML
__________________
http://blog.stealth35.com/ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com