Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将Ocaml数据类型转换为xml,反之亦然?_Xml_Ocaml - Fatal编程技术网

如何将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

有没有一种简单的方法可以从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_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