XML (last.fm) parser

   Пуснато от:    в develop



Тези дни си поиграх и написах (от нулата, с малко помощ разбира се) XML parser, който да вади информацията от last.fm и да ми позволява да я форматирам по какъвто на мене си ми харесва начин. Ето как изглежда кодът:

if (! ($xmlparser = xml_parser_create()) )
{
die (“Cannot create parser”);
}

$current = “”;
function start_tag($parser, $name, $attribs) {
global $current;
$current = $name;
if ($name == “TRACK”) {
$attribs = str_replace(“streamable=\”true\””, “”, “streamable=\”true\””);
if (is_array($attribs)) {
while(list($key,$val) = each($attribs)) {
echo strtolower($key).”=\””.$val.”\””;
}
}
}
}

function end_tag($parser, $name) {
}

xml_set_element_handler($xmlparser, “start_tag”, “end_tag”);

function tag_contents($parser, $data) {
global $current;;
if ($current == “ARTIST”) { echo $data.” – “; }
if ($current == “NAME”) { echo $data.” <br>”; }
}

xml_set_character_data_handler($xmlparser, “tag_contents”);

$filename = “recenttracks.xml”; //full URL is also possible

if (!($fp = fopen($filename, “r”))) { die(“cannot open “.$filename); }

while ($data = fread($fp, 4096)){
$data=eregi_replace(“>”.”[[:space:]]+”.”<“,”><“,$data);
if (!xml_parse($xmlparser, $data, feof($fp))) {
$reason = xml_error_string(xml_get_error_code($xmlparser));
$reason .= xml_get_current_line_number($xmlparser);
die($reason);
}
}
xml_parser_free($xmlparser);

В случая това е за Recent Tracks, но идеята е еднаква за всеки един xml файл. Просто таговете в масива ще бъдат различни 🙂 Скоро ще пусна и самите резултати 🙂

This entry was posted on Wednesday, October 10th, 2007 at 10:41 am and is filed under develop. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
КОМЕНТИРАЙТЕ