]> git.llucax.com Git - software/bife/bife-all.git/commitdiff
BIFE draft 1. Implements a generic XML parser.
authorLeandro Lucarella <llucax@gmail.com>
Sat, 17 May 2003 04:28:50 +0000 (04:28 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Sat, 17 May 2003 04:28:50 +0000 (04:28 +0000)
data.xml [new file with mode: 0644]
index.php [new file with mode: 0644]

diff --git a/data.xml b/data.xml
new file mode 100644 (file)
index 0000000..06782ae
--- /dev/null
+++ b/data.xml
@@ -0,0 +1,19 @@
+<Page title="Hola mundo!" menu="true" use="Album:Perfil">
+    <Title>Titulo</Title>
+    <P>
+        Hola, gente, como estan todos? Esta es solo la primera prueba de
+        BIFE, un cuasi-framework inspirado en <Link
+        url="http://www.lunix.com.ar/Bif.php">BIF</Link>.
+    </P>
+    <Subtitle>Subtitulo</Subtitle>
+    <List type="unordered" title="Aca va una lista de cosas:">
+        <Item>Item loco.</Item>
+        <Item>Otro item loco.</Item>
+    </List>
+
+    <Title>Album de fotos</Title>
+    <Album dir="." cols="6"/>
+
+    <Title>Este es mi perfil</Title>
+    <Perfil user="luca"/>
+</Page>
diff --git a/index.php b/index.php
new file mode 100644 (file)
index 0000000..ffb2810
--- /dev/null
+++ b/index.php
@@ -0,0 +1,61 @@
+<?
+// BIFE: Build It FastEr - draft 1
+
+define('TAB', '    ');
+
+$file = "data.xml";
+$depth = array();
+$stack = array();
+
+function startElement($parser, $name, $attrs) {
+    global $depth, $stack;
+    $stack[] = $name;
+    echo str_repeat(TAB, @$depth[$parser]);
+    echo "<$name> ";
+    foreach ($attrs as $attr => $val) {
+        echo "$attr: '$val' ";
+    }
+    echo "\n";
+    @$depth[$parser]++;
+}
+
+function endElement($parser, $name) {
+    global $depth, $stack;
+    array_pop($stack);
+    $depth[$parser]--;
+}
+
+function characterData($parser, $data) {
+    static $last = '';
+    global $depth, $stack;
+    $current = join('/', $stack);
+    $data = trim($data);
+    if ($data) {
+        echo str_repeat(TAB, @$depth[$parser]);
+        if ($current !== $last) {
+            $last = $current;
+            echo "En $current: ";
+        } else {
+            echo "             ";
+        }
+        echo "'$data'\n";
+    }
+}
+
+$xml_parser = xml_parser_create();
+xml_set_element_handler($xml_parser, "startElement", "endElement");
+xml_set_character_data_handler($xml_parser, "characterData");
+if (!($fp = @fopen($file, "r"))) {
+    die("could not open XML input\n");
+}
+
+while ($data = fread($fp, 4096)) {
+    if (!xml_parse($xml_parser, $data, feof($fp))) {
+        die(sprintf("XML error: %s at line %d\n",
+                    xml_error_string(xml_get_error_code($xml_parser)),
+                    xml_get_current_line_number($xml_parser)));
+    }
+}
+xml_parser_free($xml_parser);
+
+?>