Ik ben wat aan het stoeien om een xml file te kunnen parsen om zo wat info op mijn site te krijgen( ben noob met zml, een gevorderde beginner met php). Nu zit ik met het probleem dat hij 20 links in mijn overzicht laat zien, nu wil ik dit terug brengen naar 5 tot hooguit tien. Ik weet alleen niet waar ik een if, for of while lus in moet bouwen. Zou iemand mij hiermee kunnen helpen?
Ik heb al een if lus geplaatst op verschillende punten, maar dan krijg ik bv. na 5 regels een xml error. Ik heb al php.net, google en hier gezocht, maar kan geen goede informatie inden hierover.
mocht je willen kijken naar de xml file: http://www.raceplanet.net/xml_headlines.rp. Deze wordt 1 keer per kwartier gedownload en op mijn server geplaatst, zodat de server van raceplanet evt. niet te veel belast wordt.
Dit is een php parse script wat op verschillende sites staat als tutorial. Helaas kan ik nu geen link meer terug vinden hiervan.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
| $open_tags = array(
'ITEM' => '<ITEM>',
'title' => '<title>',
'link' => '<link>');
$close_tags = array(
'ITEM' => '</ITEM>',
'title' => '</title>',
'link' => '</title>');
function startElement($parser, $name, $attrs=''){
global $open_tags, $temp, $current_tag;
$current_tag = $name;
if ($format = $open_tags[$name]){
switch($name){
case 'ITEM':
echo '- ';
break;
default:
break;
}
}
}
function endElement($parser, $name, $attrs=''){
global $close_tags, $temp, $current_tag;
if ($format = $close_tags[$name]){
switch($name){
case 'ITEM':
return_page($temp);
$temp = '';
break;
default:
break;
}
}
}
function characterData($parser, $data){
global $current_tag, $temp, $catID;
switch($current_tag){
case 'LINK':
$temp['link'] = $data;
$current_tag = '';
break;
case 'TITLE':
$temp['title'] = $data;
$current_tag = '';
break;
default:
break;
}
}
function return_page(){
global $temp;
//volgende regel getest met een loop
echo '<font size=-1><A HREF="'.$temp['link'].'">'.$temp ['title'].'</A></font><BR>';
}
$xml_file = 'xml-files/raceplanet.xml';
$type = 'UTF-8';
$xml_parser = xml_parser_create($type);
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, true);
xml_parser_set_option($xml_parser, XML_OPTION_TARGET_ENCODING, 'UTF-8');
xml_set_element_handler($xml_parser, 'startElement','endElement');
xml_set_character_data_handler($xml_parser, 'characterData');
if (!($fp = fopen($xml_file, 'r'))) {
die("Could not open $xml_file for parsing!\n");
}
//volgende regel getest met een if loop
while ($data = fread($fp, 4096))
{ if (!($data = utf8_encode($data))) {
echo 'ERROR'."\n";
}
if (!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf( "XML error: %s at line %d\n\n",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}
xml_parser_free($xml_parser); |
Ik heb al een if lus geplaatst op verschillende punten, maar dan krijg ik bv. na 5 regels een xml error. Ik heb al php.net, google en hier gezocht, maar kan geen goede informatie inden hierover.
mocht je willen kijken naar de xml file: http://www.raceplanet.net/xml_headlines.rp. Deze wordt 1 keer per kwartier gedownload en op mijn server geplaatst, zodat de server van raceplanet evt. niet te veel belast wordt.
Dit is een php parse script wat op verschillende sites staat als tutorial. Helaas kan ik nu geen link meer terug vinden hiervan.
[ Voor 13% gewijzigd door ge-flopt op 29-12-2003 22:11 ]