Jadual Kandungan
Bagaimana Castor berfungsi
Komponen utama:
Contoh langkah demi langkah
Pilihan 1: Pemetaan lalai (tiada fail pemetaan)
Pilihan 2: Menggunakan fail pemetaan (disyorkan untuk kes yang kompleks)
Kelebihan Castor
Perangkap & Petua Biasa
Ketergantungan (Maven)
Rumah pembangunan bahagian belakang Tutorial XML/RSS Data XML mengikat dengan Castor di Java

Data XML mengikat dengan Castor di Java

Aug 15, 2025 am 03:43 AM
java xml

Castor membolehkan pemetaan objek XML-to-Java melalui konvensyen lalai atau fail pemetaan eksplisit; 1) Tentukan kelas Java dengan getters/setters; 2) Gunakan unmarshaller untuk menukar XML ke objek; 3) Gunakan Marshaller untuk bersiri objek kembali ke XML; 4) Untuk kes -kes yang kompleks, konfigurasikan pemetaan medan dalam pemetaan.xml; 5) Pemetaan beban melalui XMLContext untuk kawalan yang tepat -pendekatan ini berfungsi dengan pasti untuk sistem mudah atau warisan walaupun sokongan moden yang terhad.

Data XML mengikat dengan Castor di Java

Data XML yang mengikat dengan Castor di Java membolehkan pemaju memetakan data XML ke objek Java dan sebaliknya tanpa menghuraikan atau menjana XML secara manual. Castor adalah salah satu rangka kerja mengikat data sumber terbuka awal dan digunakan secara meluas untuk Java, yang menawarkan cara yang mudah untuk menyatukan objek Java ke XML dan deserialize XML kembali ke objek.

Data XML mengikat dengan Castor di Java

Bagaimana Castor berfungsi

Castor menggunakan fail pemetaan (atau introspeksi kelas) untuk menentukan bagaimana kelas Java sesuai dengan elemen dan atribut XML. Anda boleh bergantung pada konvensyen penamaan (pemetaan lalai) atau menyediakan fail pemetaan XML yang jelas ( mapping.xml ) untuk kawalan halus.

Komponen utama:

  • Sumber XML - Dokumen XML input atau output.
  • Kelas Java - Objek Java Lama Plain (POJOS) yang mewakili model data.
  • Fail Pemetaan (Pilihan) - Menentukan pengikatan antara medan XML dan Java.
  • Unmarshaller - Menukar XML ke objek Java.
  • Marshaller - Menukar objek Java ke XML.

Contoh langkah demi langkah

Katakan anda mempunyai fail XML yang mewakili buku:

Data XML mengikat dengan Castor di Java
 <book>
  <tirtle> Java berkesan </title>
  <Arthor> Joshua Bloch </pengarang>
  <Sbn> 978-0134685991 </isbn>
</buku>

Dan kelas Java yang sepadan:

 Buku Kelas Awam {
    tajuk rentetan peribadi;
    pengarang rentetan peribadi;
    rentetan peribadi ISBN;

    // getters dan setters
    rentetan awam getTitle () {return title; }
    public void setTItle (Tajuk String) {this.title = title; }

    public string getAuthor () {return pengarang; }
    public void setAuthor (pengarang rentetan) {this.author = pengarang; }

    rentetan awam getisbn () {return isbn; }
    public void setISbn (string isbn) {this.isbn = isbn; }
}

Pilihan 1: Pemetaan lalai (tiada fail pemetaan)

Jika nama elemen XML anda sepadan dengan nama lapangan Java (atau ikuti konvensyen Javabean), Castor boleh memetakannya secara automatik.

 import org.exolab.castor.xml.unmarshaller;
import org.exolab.castor.xml.marshaller;
import java.io.filereader;
import java.io.filewriter;

// unmarshal: xml ke objek
Buku buku = (buku) unmarshaller.unmarshal (book.class, filereader baru ("book.xml"));

// Marshal: objek ke XML
Marshaller.marshal (buku, filewriter baru ("output.xml"));

Ini berfungsi di luar kotak jika:

  • Nama Unsur Memadankan nama medan (kes sensitif secara lalai).
  • Kelas ini mempunyai setter awam dan getters.
  • Tiada jenis bersarang atau jenis tersuai yang kompleks.

Pilihan 2: Menggunakan fail pemetaan (disyorkan untuk kes yang kompleks)

Apabila struktur XML tidak sepadan dengan kelas Java, gunakan mapping.xml :

 <etapping>
  <class name = "book">
    <map-to xml = "book"/>
    <field name = "title" type = "java.lang.string">
      <bind-xml name = "title" node = "element"/>
    </medan>
    <field name = "pengarang" type = "java.lang.string">
      <bind-xml name = "pengarang" node = "element"/>
    </medan>
    <field name = "isbn" type = "java.lang.string">
      <bind-xml name = "isbn" node = "element"/>
    </medan>
  </class>
</pemetaan>

Sekarang gunakannya dalam kod:

 import org.exolab.castor.mapping.mapping;
import org.exolab.castor.xml.xmlcontext;

// Pemetaan beban
Pemetaan pemetaan = pemetaan baru ();
pemetaan.loadMapping ("pemetaan.xml");

XmlContext context = new XmlContext ();
context.addmapping (pemetaan);

// unmarshal dengan pemetaan
Unmarshaller unmarshaller = context.createunmarshaller ();
unmarshaller.setClass (book.class);
Buku buku = (buku) unmarshaller.unmarshal (fileReader baru ("book.xml"));

// Marshal dengan pemetaan
Marshaller marshaller = context.CreateMarShaller ();
marshaller.setWriter (Filewriter baru ("output.xml"));
marshaller.marshal (buku);

Kelebihan Castor

  • Persediaan mudah untuk kes penggunaan asas.
  • Pemetaan fleksibel melalui konfigurasi XML.
  • Menyokong koleksi, objek bersarang, dan warisan.
  • Boleh menjana kelas Java dari XSD (menggunakan castor-codegen ).

Perangkap & Petua Biasa

  • Nama medan mesti sepadan kecuali pemetaan ditakrifkan.
  • Gunakan atribut type dalam pemetaan untuk jenis bukan primitif atau tersuai.
  • Untuk koleksi (contohnya, List<Book> ), tentukan field dengan collection="arraylist" dalam pemetaan.
  • Castor kurang aktif dikekalkan sekarang; Pertimbangkan Jaxb atau Jackson untuk projek baru.

Ketergantungan (Maven)

Tambahkan Castor ke pom.xml anda:

 <geterlihat>
  <groupId> org.castor </groupId>
  <ctiFactId> castor-xml </artifactid>
  <versi> 1.5.1 </versi>
</ketergantungan>

Walaupun Castor popular pada awal 2000 -an pembangunan Java, alternatif moden seperti JAXB (dibina ke Java sehingga Java 9, kini berasingan), Jackson XML, atau Xstream menawarkan prestasi dan sokongan masyarakat yang lebih baik. Tetapi untuk sistem warisan atau tugas mengikat yang mudah, Castor tetap menjadi pilihan yang tidak sesuai.

Pada asasnya, jika anda terjebak dengan perkakas yang lebih tua atau memerlukan pengikatan XML-Java yang cepat tanpa anotasi, Castor mendapat pekerjaan yang dilakukan-jangan mengharapkan penggilap perpustakaan yang lebih baru.

Atas ialah kandungan terperinci Data XML mengikat dengan Castor di Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1532
276
Cari Excel dan ganti tidak berfungsi Cari Excel dan ganti tidak berfungsi Aug 13, 2025 pm 04:49 PM

ChecksearchSettingslike "MatchentireCellContents" dan "MatchCase" byExpandingOptionsInfindandReplace, memastikan "lookin" issettovaluesand "dalam" tocorrectscope; 2.lookforhiddencharactersorformattingbycopytextdirectly

Cara Menggunakan Aplikasi Java Cara Menggunakan Aplikasi Java Aug 17, 2025 am 12:56 AM

PreparyourapplicationByusingMavenorgradletobuildajarorwarfile, externalizingConfiguration.2.Chooseadeploymentenvironment: runonbaremetal/vmwithjava-jarandsystemd, deploywarontomcat, containerizeWithdoStloStLoThoStLoThoStLoThoStLoThoStLoUsToStLoUsToStLoUsToStLours.

Bagaimana cara mengkonfigurasi pembalakan dalam aplikasi Java? Bagaimana cara mengkonfigurasi pembalakan dalam aplikasi Java? Aug 15, 2025 am 11:50 AM

Menggunakan SLF4J yang digabungkan dengan Logback atau Log4J2 adalah cara yang disyorkan untuk mengkonfigurasi log dalam aplikasi Java. Ia memperkenalkan API dan perpustakaan pelaksanaan dengan menambahkan kebergantungan Maven yang sepadan; 2. Dapatkan logger melalui loggerfactory SLF4J dalam kod, dan tulis kod log yang dihancurkan dan cekap menggunakan kaedah pembalakan parameter; 3. Tentukan Format Output Log, Tahap, Sasaran (Konsol, Fail) dan Kawalan Log Tahap Pakej melalui fail konfigurasi logback.xml atau log4j2.xml; 4. Secara pilihan membolehkan fungsi pengimbasan fail konfigurasi untuk mencapai pelarasan dinamik tahap log, dan springboot juga boleh diuruskan melalui titik akhir penggerak; 5. Ikuti amalan terbaik, termasuk

Data XML mengikat dengan Castor di Java Data XML mengikat dengan Castor di Java Aug 15, 2025 am 03:43 AM

Castorenablesxml-to-javaobjectmappingviadefaultconventionsorexplicitmappingfiles; 1) definejavaclasswithgetters/setters; 2) useunmarshallertoconvertxmltoobjects;

js tambah elemen untuk memulakan array js tambah elemen untuk memulakan array Aug 14, 2025 am 11:51 AM

Dalam JavaScript, kaedah yang paling biasa untuk menambah unsur -unsur ke permulaan array adalah dengan menggunakan kaedah unshift (); 1. Menggunakan UNSHIFT () akan secara langsung mengubah suai array asal, anda boleh menambah satu atau lebih elemen untuk mengembalikan panjang baru array tambahan; 2. Jika anda tidak mahu mengubah suai array asal, disyorkan untuk menggunakan pengendali lanjutan (seperti [NewElement, ... ARR]) untuk membuat array baru; 3. Anda juga boleh menggunakan kaedah Concat () untuk menggabungkan array elemen baru dengan nombor asal, mengembalikan array baru tanpa menukar array asal; Ringkasnya, gunakan unshift () apabila mengubah suai array asal, dan mengesyorkan pengendali lanjutan apabila mengekalkan array asal tidak berubah.

Perbandingan Prestasi: Java vs Go untuk Perkhidmatan Backend Perbandingan Prestasi: Java vs Go untuk Perkhidmatan Backend Aug 14, 2025 pm 03:32 PM

GotypicallyoffersbetterruntimeperformanceWithhightherthroughputandlowerlatency, terutama sekali-sekala/o-heavyservices, duetoitslightweightgoroutinesandeficientscheduler, whentjava, wifklowertostart, canmatchgoincpu-boundsafterjitoptimization.2.

Cara bekerja dengan json di java Cara bekerja dengan json di java Aug 14, 2025 pm 03:40 PM

TOWORKWITHJSONINJAVA, USEATHIRD-PARTYLIBRARYLIKEJACKSON, GSON, ORJSON-B, ASJAVALACKSBUILT-Insupport;

Apakah kata kunci menegaskan di Java? Apakah kata kunci menegaskan di Java? Aug 17, 2025 am 12:52 AM

TheassertkeywordinJavaisusedtovalidateassumptionsduringdevelopment,throwinganAssertionErroriftheconditionisfalse.2.Ithastwoforms:assertcondition;andassertcondition:message;withthelatterprovidingacustomerrormessage.3.Assertionsaredisabledbydefaultandm

See all articles