如何将Ocaml数据类型转换为xml,反之亦然?
有没有一种简单的方法可以从Ocaml数据类型转换为相应的xml表示 假设我有以下类型:如何将Ocaml数据类型转换为xml,反之亦然?,xml,ocaml,Xml,Ocaml,有没有一种简单的方法可以从Ocaml数据类型转换为相应的xml表示 假设我有以下类型: type A = | FirstA of B list | SecondA of C * string type B = B1 | B2 type C = { my_field: int; } 对于值SecondA(C{my_field=10},“just a value”)我想得到如下结果: <A constructor="FirstA"> <C><my
type A =
| FirstA of B list
| SecondA of C * string
type B = B1 | B2
type C = {
my_field: int;
}
对于值SecondA(C{my_field=10},“just a value”)
我想得到如下结果:
<A constructor="FirstA">
<C><my_field>10</my_field></C>
<string>just a value</string>
</A>
10
只是一个价值
有没有图书馆可以这样做?或者,如果我必须自己做,那么最好的方法是什么?请注意,我想将其应用于多种不同的数据类型
我知道数据类型通用编程技术,但在我的案例中它们太“重”了。我不知道你所说的“数据类型通用编程技术”是什么意思。有多个库使用camlp4预处理器从类型声明自动派生序列化程序:
- Jane St.Capital的sexplib()
- 由Jeremy Yallop()和
尽管这些都不能生成XML,但它们可能会有所帮助。特别是由sexplib生成的s表达式与XML没有太大的不同。如果我正确理解了您的问题,有一种方法可以做到这一点: IoXML是的Camlp5语法扩展 OCaml mli和生成 所有类型的XML解析器和打印机 你定义 JSON也有一个类似的例子: 如果您对使用JSON还满意,我建议您也看看。该系统依赖于外部数据定义语言,但它仍然生成惯用的OCaml类型定义 更新(08/15/2011):现在我自己也能做到这一点。它可以使用4种不同的格式序列化OCaml数据:Google协议缓冲区、JSON、XML和Piq