Kom ihåg mig?
Home Menu

Menu


XML till MySQL importer?

Ämnesverktyg Visningsalternativ
Oläst 2003-09-26, 23:19 #1
Filips avatar
Filip Filip är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jan 2003
Inlägg: 935
Filip Filip är inte uppkopplad
Mycket flitig postare
Filips avatar
 
Reg.datum: Jan 2003
Inlägg: 935
Finns det något färdigt script som hämtar hem en XML-feed och lägger det i en MySQL databas?

Tacksam för svar,

/
filip
Filip är inte uppkopplad   Svara med citatSvara med citat
Oläst 2003-09-27, 02:19 #2
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Är det endast en struktur på XML-filen bygger du enkelt en XML parser med PHP. Jag knåpa ihop något snabbt för att leda dig lite i rätt riktning:

Exempel på XML-fil (för vilken nedanstående parser är anpassad)
Kod:
<links_archive>
	<link>
 <title>Swedish Webmaster Network</title>
 <url>http://www.webmasternetwork.se</url>
 <description>A Swedish (by origin and language) community for commercial and/or professional webmasters.</description>
	</link>
	<link>
 <title>W3 Consortium</title>
 <url>http://www.w3.org</url>
 <description>A great organisation very notable in driving the Web to it`s greatest potential</description>
	</link>
</links_archive>
Exempel på parser (för ovanstående XML-fil)
Kod:
$file = "data.xml"; //din xml feed (url eller filnamn)
$outdata=array(); //variabeln vi kommer lagra datan i
$typ = ""; //senare använd för att veta vilket nuvarande element är
$set=0; //används för att veta var i arreyn vi ska lägga datan (aktuell key)

// Används endast för att hämta namnet på elementet.
// Ska du utöka parsern till att hämta elementens attribut, hanteras det här
function startElement($foo, $namn, $foo) {
 * *global $typ;
 * *$typ = $namn;
}

//hanterar vår CDATA (placerar den i vår arrey)
function CDATA_handler($parser, $data) {
	global $typ,$outdata,$set;
	switch($typ){ // ska vi använda oss av CDATAN i detta element?
 *case 'title':
 *	$outdata[$set]['title']=$data; $typ='';	
 *break;
 *case 'url':
 *	$outdata[$set]['url']=$data; $typ='';	
 *break;
 *case 'description':
 *	$outdata[$set]['description']=$data; $typ='';
 *	$set++;
 *break;
	}
	
}

$xml_parser = xml_parser_create(); 
xml_set_element_handler($xml_parser, 'startElement', FALSE); //funktion som hanterar start av element (och säger att vi inte behöver någon hantering för slut av element
xml_set_character_data_handler($xml_parser, 'CDATA_handler'); // funktion som hanterar CDATA
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, 0); // gör att vi slipper uppercase på elementnamnen
$data=join('',file($file)); //dumt och snabbt sätt att hämta filen
xml_parse($xml_parser, $data); //här sätter vi igång parsen
xml_parser_free($xml_parser); // hepp, då var allt klart, då rensar vi
var_dump($outdata); // dumpar datan i vår arrey till skärmen
Notera att den endast hanterar CDATA, är helt utan felhantering samt är rätt så fulkodad.
Clarence är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 02:00.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017