This function will allow more OCAML-ish processing of xpath queries
with multiple results.
---
mllib/xpath_helpers.ml | 9 +++++++++
mllib/xpath_helpers.mli | 4 ++++
2 files changed, 13 insertions(+)
diff --git a/mllib/xpath_helpers.ml b/mllib/xpath_helpers.ml
index 8648596a4..f12156f45 100644
--- a/mllib/xpath_helpers.ml
+++ b/mllib/xpath_helpers.ml
@@ -53,3 +53,12 @@ let xpath_eval_default parsefn xpath expr default =
let xpath_string_default = xpath_eval_default identity
let xpath_int_default = xpath_eval_default int_of_string
let xpath_int64_default = xpath_eval_default Int64.of_string
+
+let xpath_get_nodes xpathctx expr =
+ let obj = Xml.xpath_eval_expression xpathctx expr in
+ let nodes = ref [] in
+ for i = 0 to Xml.xpathobj_nr_nodes obj - 1 do
+ let node = Xml.xpathobj_node obj i in
+ nodes := List.append !nodes [node]
+ done;
+ !nodes
diff --git a/mllib/xpath_helpers.mli b/mllib/xpath_helpers.mli
index 7434ba645..ab176351f 100644
--- a/mllib/xpath_helpers.mli
+++ b/mllib/xpath_helpers.mli
@@ -31,3 +31,7 @@ val xpath_int_default : Xml.xpathctx -> string -> int -> int
val xpath_int64_default : Xml.xpathctx -> string -> int64 -> int64
(** Parse an xpath expression and return a string/int; if the expression
doesn't match, return the default. *)
+
+val xpath_get_nodes : Xml.xpathctx -> string -> Xml.node list
+(** Parse an xpath expression and return a list with the matching
+ XML nodes. *)
--
2.12.0