FAQ |
Kalender |
![]() |
#1 | |||
|
||||
Mycket flitig postare
|
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 |
|||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Administratör
|
Ä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> 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
__________________
eldefors.com - Personlig (teknik)-blogg |
||
![]() |
![]() |
Svara |
|
|