]> matita.cs.unibo.it Git - helm.git/blobdiff - components/xml/test.ml
branch for universe
[helm.git] / components / xml / test.ml
diff --git a/components/xml/test.ml b/components/xml/test.ml
new file mode 100644 (file)
index 0000000..84c042e
--- /dev/null
@@ -0,0 +1,60 @@
+(* $Id$ *)
+
+(* Parsing test:
+ * - XmlPushParser version *)
+open Printf
+open XmlPushParser
+
+let print s = print_endline s; flush stdout
+
+let callbacks =
+  { default_callbacks with
+      start_element =
+        Some (fun tag attrs ->
+          let length = List.length attrs in
+          print (sprintf "opening %s [%s]"
+            tag (String.concat ";" (List.map fst attrs))));
+      end_element = Some (fun tag -> print ("closing " ^ tag));
+      character_data = Some (fun data -> print "character data ...");
+  }
+
+let xml_parser = create_parser callbacks
+
+let is_gzip f =
+  try
+    let len = String.length f in
+    String.sub f (len - 3) 3 = ".gz"
+  with Invalid_argument _ -> false
+
+let _ =
+  let xml_source =
+    if is_gzip Sys.argv.(1) then
+      `Gzip_file Sys.argv.(1)
+    else
+      `File Sys.argv.(1)
+  in
+  parse xml_parser xml_source
+
+(* Parsing test:
+ * - Pure expat version (without XmlPushParser mediation).
+ * Originally written only to test if XmlPushParser mediation caused overhead.
+ * That was not the case. *)
+
+(*let _ =*)
+(*  let ic = open_in Sys.argv.(1) in*)
+(*  let expat_parser = Expat.parser_create ~encoding:None in*)
+(*  Expat.set_start_element_handler expat_parser*)
+(*    (fun tag attrs ->*)
+(*      let length = List.length attrs in*)
+(*      print (sprintf "opening %s [%d attribute%s]"*)
+(*      tag length (if length = 1 then "" else "s")));*)
+(*  Expat.set_end_element_handler expat_parser*)
+(*    (fun tag -> print ("closing " ^ tag));*)
+(*  Expat.set_character_data_handler expat_parser*)
+(*    (fun data -> print "character data ...");*)
+(*  try*)
+(*    while true do*)
+(*      Expat.parse expat_parser (input_line ic ^ "\n")*)
+(*    done*)
+(*  with End_of_file -> Expat.final expat_parser*)
+