Daisycon xml in database zetten
Ik heb een probleem. Ik weet niet hoe ik een daisycon xml file kan uitlezen en in een database kan zetten.
Ik heb begrepen dat ik het het beste in een csv bestand kan omzetten en dan via een simpele query kan inserten?
Of heeft iemand anders een oplossing?
Mark
Neem nu eens je gemak en neem het volgende goed door:
http://www.php.net/DOM
http://www.php.net/manual/en/book.xsl.php
Gewijzigd op 05/06/2010 23:35:14 door Noppes Homeland
Het probleem is dus dat ik niet weet hoe ik hem om kan zetten naar csv.
ZOals bij
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$oXMLDocument = new DOMDocument();
$oXSLTDocument = new DOMDocument();
$oXSLTProcessor = new XSLTProcessor();
$oXMLDocument->load('xslt_import_data.xml', LIBXML_NOCDATA);
$oXSLTDocument->load('xslt_import_xslt.xsl');
$oXSLTProcessor->importStylesheet($oXSLTDocument);
echo $oXSLTProcessor->transformToXML($oXMLDocument);
?>
$oXMLDocument = new DOMDocument();
$oXSLTDocument = new DOMDocument();
$oXSLTProcessor = new XSLTProcessor();
$oXMLDocument->load('xslt_import_data.xml', LIBXML_NOCDATA);
$oXSLTDocument->load('xslt_import_xslt.xsl');
$oXSLTProcessor->importStylesheet($oXSLTDocument);
echo $oXSLTProcessor->transformToXML($oXMLDocument);
?>
Is hierbij $oXSLTProcessor->transformToXML($oXMLDocument); de csv? Of hoe moet ik dit zien?
M Puts op 05/06/2010 23:35:56:
Zie de laatste reactie daar ;)
Dus dan ga je maar cross-forum posten? Hier gaan hebben over iets wat daar uitgelegd is? En zeker niet vermelden waar je het vandaan hebt?
Lees nou maar effe gewoon die links die je krijgt. Het is écht niet moeilijk, als je gewoon maar effe inzet toont.
http://www.yapf.net/index.php/Data_importeren_via_XSLT is de bron die ik gebruikt heb. Zoals je misschien al merkt ben ik een beginner en nu het dus helemaal niet meer snap.
(krijg ik geen antwoord meer omdat het echt zo simpel is, dus een domme vraag is of.., op phpfreakz??)
Over LOAD DATA INFILE is wel genoeg te vinden maar over het converten niet zo.
Gewijzigd op 06/06/2010 00:18:29 door M Puts
Je hebt hier dan wel 1 gerichte vraag gesteld, maar daar kan geen antwoord opgegeven, omdat we de inhoud van de file 'xslt_import_xslt.xsl' niet kennen.
Ik heb het script gewoon exact overgenomen van http://www.yapf.net/index.php/Data_importeren_via_XSLT
Het probleem is vooral, ik weet niet wat het voorstelt. Hoe ik het dus het simpelste/makkelijkste kan doen.
Trouwens bedankt dat je nog op dit tijdstip reageert :)
M Puts op 06/06/2010 01:14:00:
Het probleem is vooral, ik weet niet wat het voorstelt.
Tja, als je alleen maar kijkt en niets leest, dan wel het voorbeeld oppakt om er mee te experimenteren, gebeurt er ook niets en zal je dus ook nooit gaan begrijpen wat dat stukje code voorstelt.
M Puts op 06/06/2010 01:14:00:
Hoe ik het dus het simpelste/makkelijkste kan doen.
Er is maar 1 manier waarop je dit kan toepassen, dus je zit je hersenen te pijnigen op een probleem wat niet daar is.
Maar nu is de csv output heb, moet ik dat eerst wegschrijven naar een csv bestand? Voordat ik het load data infile gebruik? Aangezien de naam al zegt load data in FILE. Of is het als een variabele opslaan ook goed?
Daarnaast is er ook een tool die voor mij de .xsl bestand aanmaakt?
M Puts op 06/06/2010 12:26:16:
Maar nu is de csv output heb, moet ik dat eerst wegschrijven naar een csv bestand?
Lijkt mij van wel.
M Puts op 06/06/2010 12:26:16:
Daarnaast is er ook een tool die voor mij de .xsl bestand aanmaakt?
Nee
Op phpfreakz.nl lees ik dat je geen csv kan / mag gebruiken. Waarom wil je em nu omzetten naar csv dan?
Het feit is, dat de xml data getransformeerd moet worden naar een vorm, zodat het in een database tabel ingelezen kan worden.
LOAD DATA is dan de aangewezen SQL functie en dus zal je de xml met xsl moeten transformeren naar csv-format. (xsl is daartoe het eenvoudigste)
Als je namenlijk alles met INSERT gaat verwerken loop je het risico tegen diverse problemen aan te lopen.
Gewijzigd op 06/06/2010 13:00:46 door Noppes Homeland
Bedankt voor de reactie's maar moet ik de csv data wegschrijven in een bepaald bestand en dat dan met load data in file doen? Of kan ik hem in bijvoorbeeld $output opslaan?
Lees nu eens wat er gepost wordt dd: 06/06/2010 12:38:19
Bedankt voor de info :)
Dit is de output wat ik krijg:
Code (php)
1
2
3
4
2
3
4
LOAD DATA LOCAL INFILE "data.csv" INTO TABLE vakanties FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY """" IGNORE 1 LINES
Query was empty
Query was empty
Bij t script:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
include('connect.php');
$txtfile = 'data.csv';
$table = 'vakanties';
$sql = 'LOAD DATA LOCAL INFILE "'.$txtfile.'" INTO TABLE '.$table.' FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY """" IGNORE 1 LINES';
echo $sql.'<br /><br /><br />';
mysql_query($loadsql) or die(mysql_error());
?>
include('connect.php');
$txtfile = 'data.csv';
$table = 'vakanties';
$sql = 'LOAD DATA LOCAL INFILE "'.$txtfile.'" INTO TABLE '.$table.' FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY """" IGNORE 1 LINES';
echo $sql.'<br /><br /><br />';
mysql_query($loadsql) or die(mysql_error());
?>
Template:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version='1.0' exclude-result-prefixes="xsl">
<xsl:output method="html" indent="yes" encoding="UTF-8" />
<!-- Begin het toepassen van de templates -->
<xsl:template match="/">
<xsl:apply-templates select="//item" />
</xsl:template>
<!-- Template voor een record -->
<xsl:template match="item">
"<xsl:value-of select="id"/>","<xsl:value-of select="title"/>","<xsl:value-of select="link"/>","<xsl:value-of select="daisycon_unique_id"/>","<xsl:value-of select="description"/>","<xsl:value-of select="country_of_origin"/>","<xsl:value-of select="duration"/>","<xsl:value-of select="img_small"/>","<xsl:value-of select="img_medium"/>","<xsl:value-of select="minimum_price"/>","<xsl:value-of select="departure_date"/>","<xsl:value-of select="transportation_type"/>","<xsl:value-of select="country_of_destination"/>","<xsl:value-of select="priority"/>","<xsl:value-of select="accommodation_name"/>","<xsl:value-of select="city_of_destination"/>"
</xsl:template>
</xsl:stylesheet>
<xsl:output method="html" indent="yes" encoding="UTF-8" />
<!-- Begin het toepassen van de templates -->
<xsl:template match="/">
<xsl:apply-templates select="//item" />
</xsl:template>
<!-- Template voor een record -->
<xsl:template match="item">
"<xsl:value-of select="id"/>","<xsl:value-of select="title"/>","<xsl:value-of select="link"/>","<xsl:value-of select="daisycon_unique_id"/>","<xsl:value-of select="description"/>","<xsl:value-of select="country_of_origin"/>","<xsl:value-of select="duration"/>","<xsl:value-of select="img_small"/>","<xsl:value-of select="img_medium"/>","<xsl:value-of select="minimum_price"/>","<xsl:value-of select="departure_date"/>","<xsl:value-of select="transportation_type"/>","<xsl:value-of select="country_of_destination"/>","<xsl:value-of select="priority"/>","<xsl:value-of select="accommodation_name"/>","<xsl:value-of select="city_of_destination"/>"
</xsl:template>
</xsl:stylesheet>
Wat doe ik nu verkeerd?
Gewijzigd op 06/06/2010 17:03:39 door M Puts
Waar heb je de data.csv geplaatst, het kan niet zo zijn dat deze file op de juiste plek staat, je dient exact aan te geven waar de file staat.
Maar de data.csv staat gewoon in de zelfde folder.
Zo dus je hebt data.csv geplaats in de `bin` directory van mysql geplaatst, lijkt mij niet juist.
Wat is die bin dir?
Hoe zou ik het wel goed kunnen doen?