Bagaimana cara menambahkan instruksi pemrosesan XML selama JAXB marshal

Saya ingin menambahkan instruksi pemrosesan setiap kali properti koleksi/array diserialisasi untuk mendapatkan sesuatu seperti

<alice>
  <? array bob ?>
  <bob>edgar</bob>
  <bob>david</bob>
</alice>

Apakah ini mungkin dengan JAXB? Atau setidaknya dengan implementasi JAXB tertentu?


person chris    schedule 03.08.2011    source sumber


Jawaban (1)


person    schedule
comment
Terima kasih, saya akan mencobanya dengan MOXy. Anotasi @ProcessingInstruction pasti bagus. Namun, karena saya ingin menambahkan PI untuk daftar mana pun, akan agak merepotkan untuk menambahkan anotasi untuk semua properti daftar dalam model. Apakah ada cara untuk mendaftarkan XmlAdapter secara global? - person chris; 09.08.2011
comment
@chris - Anda dapat mendaftarkan XmlAdapters di tingkat paket dengan @XmlJavaTypeAdapters (lihat blog.bdoughan.com/2011/05/). Namun karena Anda akan memiliki Daftar dengan tipe konten berbeda, ini tidak akan berhasil untuk Anda. Saya juga menduga isi PI akan berbeda untuk setiap properti, yang berarti solusi per properti akan bekerja lebih baik. - person bdoughan; 09.08.2011
comment
Ok terima kasih. Sayangnya, metode marshal(...) tidak memiliki informasi apa pun tentang properti/elemennya. Ini berarti saya harus mengimplementasikan kelas adaptor untuk setiap properti daftar. Hmm... Anotasi @ProcessingInstruction pasti bagus. - person chris; 10.08.2011
comment
apa pendapat Anda tentang semacam MarshalListener yang dapat ditambahkan ke Marshaller dengan metode pendengar yang menginformasikan tentang peristiwa marshal saat ini? - person chris; 10.08.2011
comment
@ Chris - Saya sudah memikirkan hal itu, tetapi MarshalListener berada di tingkat objek domain, dan Anda benar-benar memerlukan peristiwa tingkat bidang/properti. - person bdoughan; 10.08.2011
comment
coba kode Anda. Sebaliknya sekali untuk daftar, BobAdapter dipanggil untuk setiap elemen daftar yang menyebabkan ClassCastException. - person chris; 10.08.2011
comment
Perhatikan bahwa PI muncul satu kali per urutan array. - person chris; 10.08.2011
comment
terima kasih; secara keseluruhan, saya merasa solusi XmlAdapter bukanlah suatu pilihan dalam praktiknya. Anotasi ProcessingInstruction akan baik-baik saja, tetapi tidak tersedia. Apa yang sebenarnya saya cari adalah cara untuk mencegat proses marshalling untuk menambahkan PI untuk setiap daftar. - person chris; 15.08.2011