Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/11/2011, 15h20   #1
Invité de passage
 
Inscription : février 2011
Messages : 13
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 13
Points : 4
Points : 4
Par défaut Insection de donnée XML dans une BDD

Salut les gens.
Je vous expose mon problème.
J'ai un document XML avec la structure suivante :


Code :
1
2
3
4
5
6
7
8
9
10
<channel>
<item>
    <title></title>
    <link></link>
    <description></description>
    <pubDate></pubDate>
    <dc:creator />
    <enclosure url="" />
</item>
</channel>
J'ai une page php avec le script suivant :


Code :
1
2
3
4
5
6
<?php 
$rss = simplexml_load_file("rss.xml") ;
foreach($rss->channel->item AS $article){
 
	}
?>


J'aimerais insérer dans ma base de donnée les différentes informations contenues dans mes balises XML

Code :
1
2
3
4
5
<title></title> pour mon champ titre
<link></link> pour lien
<description></description> pour resume
<pubDate></pubDate> pour date
<enclosure url=""  /> pour image
Je sais que c'est que je dois partie d'un
Code :
1
2
INSERT INTO `Article` () VALUES
();
et le placer dans ma boucle foreach.
Mais voilà je ne sais pas quoi y mettre ...
Merci d'avance
MrTitomy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2011, 15h46   #2
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 139
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 139
Points : 2 467
Points : 2 467
Envoyer un message via Yahoo à zinzineti
Si tu utilises une base SQL SERVER 2005 et > alors tu peux t'inspirer de ceci
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2011, 20h55   #3
Invité de passage
 
Inscription : février 2011
Messages : 13
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 13
Points : 4
Points : 4
Merci pour l'aide. Mais peu tu m'expliquer ses lignes stp ?
Code :
1
2
3
4
5
 
EXEC P_ImportXMLFileToTable @NomSchema = 'dbo',  
@NomTable = N'XMLTab', 
@XmlColonne = N'xmlCol', 
@XmlFilenameWithDirectory=N'C:\temp\Contacts.xml'
Sinon en utilisant INSERT INTO ça serait pas plus simple ?
MrTitomy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2011, 15h56   #4
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 139
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 139
Points : 2 467
Points : 2 467
Envoyer un message via Yahoo à zinzineti
Citation:
Envoyé par MrTitomy Voir le message
Merci pour l'aide. Mais peu tu m'expliquer ses lignes stp ?

EXEC P_ImportXMLFileToTable @NomSchema = 'dbo',
@NomTable = N'XMLTab',
@XmlColonne = N'xmlCol',
@XmlFilenameWithDirectory=N'C:\temp\Contacts.xml'

Sinon en utilisant INSERT INTO ça serait pas plus simple ?
La procédure stockée P_ImportXMLFileToTable permet de charger un fichier xml dans une colonne de type xml (xmlColonne). Cette procédure stockée est détaillée ici

Une fois le fichier xml chargé dans une table, tu peux soit faire des requêtes avec sortie sous forme XML ou bien avec sortie tabulaire (sous forme de ligne-colonne).
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2011, 19h01   #5
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 791
Points : 17 791
Utilisez un document XSLT.

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2011, 23h13   #6
Invité de passage
 
Inscription : février 2011
Messages : 13
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 13
Points : 4
Points : 4
Pour le document XSL j'ai fait ça
recup.xsl


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl" xmlns="http://www.w3.org/TR/REC-html40" result-ns="">
	<xsl:template match="channel/item">
			<xsl:text> INSERT INTO Article (title, lien, resume, date) VALUES ( </xsl:text>
			<xsl:value-of SELECT="title"/>
			<xsl:text>, </xsl:text>
			<xsl:value-of SELECT="link"/>
			<xsl:text>, </xsl:text>
			<xsl:value-of SELECT="description"/>
			<xsl:text>, </xsl:text>
            <xsl:value-of SELECT="pubDate"/>
			<xsl:text>, </xsl:text>
            <xsl:value-of SELECT="enclosure/@url"/>
			<xsl:text> </xsl:text>
			<xsl:text>);</xsl:text><br/> 		
	</xsl:template>
</xsl:stylesheet>
Je l'ai bien lié à ma feuille XML mais l'erreur suivante est retourné "Erreur lors du chargement de la feuille de style : Échec de l'analyse d'une feuille de style XSLT" et je n'arrive pas à la corriger

Je suis donc partie sur autre chose avec le script PHP suivant

test.php

Code :
1
2
3
4
5
6
7
<?php 
$rss = simplexml_load_file("rss.xml") ;
//print_r ($rss) ;
foreach($rss->channel->item AS $article){
	echo 'INSERT INTO Article (title, lien, resume, date) VALUES (' ,$article->title,', ',  $article->link,', ', $article->description,', ', $article->pubDate,', ', $article->enclosure[url], ')<br />';
	}
?>

Je me retrouve avec plusieurs lignes du style :

Code :
INSERT INTO Article (titre, lien, resume, date) VALUES (title, link, description , Fri, 11 Nov 2011 18:35:48 +0100, )
Mais voilà j'ai encore des problèmes car dans les basiles XML <description> et <pubDate> il y des virgules qui posent problèmes dans l'interprétation SQL ...

Pouvez vous m'aidez les gens ?
MrTitomy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 09h10   #7
Rédacteur/Modérateur

 
Avatar de WOLO Laurent
 
Homme Laurent WOLO
Architecte de base de données
Inscription : mars 2003
Messages : 2 696
Détails du profil
Informations personnelles :
Nom : Homme Laurent WOLO
Âge : 35
Localisation : Congo-Brazzaville

Informations professionnelles :
Activité : Architecte de base de données
Secteur : Finance

Informations forums :
Inscription : mars 2003
Messages : 2 696
Points : 3 917
Points : 3 917
Envoyer un message via Yahoo à WOLO Laurent
Quelle est la version de ton sgbdr ? On ne devait plus demander ce genre d'infos.
__________________

Découvrez la FAQ de MS SQL Server.
La chance accorde ses faveurs aux esprits avertis !
WOLO Laurent est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h47.


 
 
 
 
Partenaires

Hébergement Web