Ä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.