]> git.llucax.com Git - software/bife/bife-all.git/blob - index.php
BIFE draft 1. Implements a generic XML parser.
[software/bife/bife-all.git] / index.php
1 <?
2 // BIFE: Build It FastEr - draft 1
3
4 define('TAB', '    ');
5
6 $file = "data.xml";
7 $depth = array();
8 $stack = array();
9
10 function startElement($parser, $name, $attrs) {
11     global $depth, $stack;
12     $stack[] = $name;
13     echo str_repeat(TAB, @$depth[$parser]);
14     echo "<$name> ";
15     foreach ($attrs as $attr => $val) {
16         echo "$attr: '$val' ";
17     }
18     echo "\n";
19     @$depth[$parser]++;
20 }
21
22 function endElement($parser, $name) {
23     global $depth, $stack;
24     array_pop($stack);
25     $depth[$parser]--;
26 }
27
28 function characterData($parser, $data) {
29     static $last = '';
30     global $depth, $stack;
31     $current = join('/', $stack);
32     $data = trim($data);
33     if ($data) {
34         echo str_repeat(TAB, @$depth[$parser]);
35         if ($current !== $last) {
36             $last = $current;
37             echo "En $current: ";
38         } else {
39             echo "             ";
40         }
41         echo "'$data'\n";
42     }
43 }
44
45 $xml_parser = xml_parser_create();
46 xml_set_element_handler($xml_parser, "startElement", "endElement");
47 xml_set_character_data_handler($xml_parser, "characterData");
48 if (!($fp = @fopen($file, "r"))) {
49     die("could not open XML input\n");
50 }
51
52 while ($data = fread($fp, 4096)) {
53     if (!xml_parse($xml_parser, $data, feof($fp))) {
54         die(sprintf("XML error: %s at line %d\n",
55                     xml_error_string(xml_get_error_code($xml_parser)),
56                     xml_get_current_line_number($xml_parser)));
57     }
58 }
59 xml_parser_free($xml_parser);
60
61 ?>