2011-03-16 11 views
5

Bir Ocaml veri türünden karşılık gelen bir xml temsiline gitmenin kolay bir yolu var mı? Bir Ocaml veri türünü xml'ye ve diğer yöntemlere dönüştürme işlemi nasıl yapılır?

<A constructor="FirstA"> 
    <C><my_field>10</my_field></C> 
    <string>just a value</string> 
</A> 

böyle bir şey yapabileceği herhangi kütüphane var: Belki böyle bir şey almak istiyorum değeri SecondA (C {my_field=10}, "just a value") için

type A = 
    | FirstA of B list 
    | SecondA of C * string 

type B = B1 | B2 

type C = { 
    my_field: int; 
} 

:

Ben aşağıdaki türde olduğunu varsayalım ? Ya da, kendim yapmak zorunda kalırsam, en iyi yaklaşım ne olurdu? Bunu birden çok farklı veri türüne uygulamak istediğimi unutmayın.

Veri türü genel program tekniklerinin farkındayım ama benim durumumda kullanmak için çok "ağır".

cevap

6

, IoXML var bunu yapabileceği:

IoXML tanımladığınız her türlü XML ayrıştırıcıları ve yazıcıları üreten OCaml MLI ve ml'lik dosyaları için bir Camlp5 sözdizimi uzantısıdır .

JSON için de benzer bir tane var: Eğer JSON kullanmasının bir sakıncası iseniz https://github.com/mirage/shelf

, ben ATD/yojson bakarak da öneririm. Bu sistem harici veri tanımlama diline dayanır, ancak yine de deyimsel OCaml tür tanımları üretir.

UPDATE (08/15/2011): Şimdi kendi Piqi project benim de bunu yapabilir. OCaml verilerini 4 farklı format kullanarak serileştirebilir: Google Protokolü Tamponları, JSON, XML ve Piq.

5

"Veri türü genel programlama teknikleri" ile ne demek istediğinizden emin değilim.

Jane Aziz Capital Jeremy Yallop tarafından ( http://ocaml.janestcapital.com/?q=node/13)
  • türetilmesi (http://portal.acm.org/citation.cfm?id=1292548) tarafından

    : otomatik tip bildirimleri gelen serializers türetmek için camlp4 önişlemci kullanan birden kütüphaneler vardır Bunların hiçbiri XML üretmiyor olsa da, bazı yardımlarda bulunabilirler. Özellikle sexplib tarafından oluşturulan s ifadeleri XML'e çok benzemez. Sorunuzu doğru anladıysam

  • İlgili konular