Frågan#1
Eftersom jag inte får DOMXML att fungera använder jag istället SAX för att försöka hämta nyheter från följande sida: http://www.basket.se/feed/news.asp?n=10
Det går dock inte så bra länken som skrivs ut bara är sista delen. Länkarna ser normalt ut så här:
http://www.basket.se/t3.asp?p=4658&x=1&a=107634
... men det som skrivs ut är bara det som kommer efter den sista ampersanden alltså:
a=107634
<?
$current_tag = '';
$GLOBALS['headline'] = '';
$GLOBALS['date'] = '';
$GLOBALS['link'] = '';
function startElement($parser, $name, $attrs) {
global $current_tag;
$current_tag = $name;
// output opening HTML tags
switch ($name) {
case 'ARTICLE':
echo '<tr>';
break;
case 'CONTENTNAME':
echo '<td>';
break;
case 'CONTENTPUBLISHEDTIME':
echo '<td>';
break;
case 'NEWSLINK':
echo '<td>';
break;
}
}
// process data between tags
function characterData($parser, $data) {
global $current_tag;
// output opening HTML tags
switch ($current_tag) {
case 'CONTENTNAME':
$GLOBALS['headline'] = $data;
break;
case 'CONTENTPUBLISHEDTIME':
$GLOBALS['date'] = $data;
break;
case 'NEWSLINK':
$GLOBALS['link'] = $data;
break;
}
}
function endElement($parser, $name) {
global $current_tag;
// output opening HTML tags
switch ($name) {
case 'ARTICLE':
echo '</tr>';
break;
case 'CONTENTNAME':
echo '<a href="'.$GLOBALS['link'].'">'.$GLOBALS['headline'].'</a></td>';
break;
case "CONTENTPUBLISHEDTIME":
echo $GLOBALS['date'].'</td>';
break;
case 'NEWSLINK':
echo $GLOBALS['link'].'</td>';
break;
}
// clear current tag variable
$current_tag = '';
}
// data file
$file = "http://www.basket.se/feed/news.asp?n=10";
// initialize parser
$xml_parser = xml_parser_create();
// set callback functions
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
// open XML file
if (!($fp = fopen($file, "r"))) {
die("Cannot locate XML data file: $file");
}
?>
<table border="1">
<?
// read and parse data
while ($data = fread($fp, 5120)) {
// error handler
if (!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code($xml_parser)), xml_get_current_line_number($xml_parser)));
}
}
?>
</table>
<?
// clean up
xml_parser_free($xml_parser);
?>
