type xml_parser = Expat.expat_parser
+exception Parse_error of string
+
let create_parser callbacks =
let expat_parser = Expat.parser_create ~encoding:None in
(match callbacks.start_element with
in
aux
+let parse expat_parser xml_source =
+ try
+ parse expat_parser xml_source
+ with Expat.Expat_error xml_error ->
+ raise (Parse_error (Expat.xml_error_to_string xml_error))
+
type xml_parser
+ (** raised when a parse error occurs, argument is an error message.
+ * This exception carries no position information, but it should be get using
+ * get_position below *)
+exception Parse_error of string
+
(** Create a push parser which invokes the given callbacks *)
val create_parser: callbacks -> xml_parser
- (** Parse XML data from a given source with a given parser *)
+ (** Parse XML data from a given source with a given parser
+ * @raise Parse_error *)
val parse: xml_parser -> xml_source -> unit
(** Inform the farser that parsing is completed, needed only when source is
* `String, for other sources it is automatically invoked when the end of file
- * is reached *)
+ * is reached
+ * @raise Parse_error *)
val final: xml_parser -> unit
(** @return current <line, column> pair *)