Menulis dokumen org.w3.dom.D ke File

1. Ikhtisar

Bagian penting dari penanganan XML adalah membuat file XML yang dapat digunakan oleh orang lain.

Saat menangani XML di Java, kita akan sering memiliki instance org.w3c.dom.Document yang perlu kita ekspor.

Dalam tutorial singkat ini, kita akan melihat bagaimana menulis Dokumen ke file baik dalam format in-line maupun format cantik .

2. Menggunakan Transformer

Penggerak utama saat menulis Document s ke file adalah javax.xml.transform.Transformer.

2.1. Membuat Transformer

Jadi, mari kita mulai dengan mendapatkan TransformerFactory . Kami akan menggunakan pabrik ini untuk membuat trafo:

TransformerFactory transformerFactory = TransformerFactory.newInstance()

Properti sistem javax.xml.transform.TransformerFactory menentukan implementasi pabrik yang akan dibuat. Akibatnya, properti ini menamai subclass konkret dari kelas abstrak TransformerFactory . Tapi, jika kita tidak mendefinisikan properti ini, trafo hanya akan menggunakan default platform.

Perhatikan bahwa sejak Java 9, kita dapat menggunakan TransformerFactory. newDefaultInstance () untuk membuat implementasi default sistem bawaan.

Sekarang setelah kita memiliki pabrik, mari buat Transformer :

Transformer transformer = transformerFactory.newTransformer();

2.2. Menentukan Sumber dan Hasil

The Transformer mengubah sumber menjadi hasil. Dalam kasus kami, sumbernya adalah dokumen XML dan hasilnya adalah file keluaran.

Pertama, mari tentukan sumber transformasi. Di sini, kami akan menggunakan Dokumen kami untuk membuat sumber DOM:

DOMSource source = new DOMSource(document);

Perhatikan bahwa sumber tidak harus keseluruhan dokumen. Selama XML terbentuk dengan baik, kita dapat menggunakan sub-pohon dari dokumen.

Selanjutnya, kami akan menentukan di mana trafo harus menulis hasil transformasi:

FileWriter writer = new FileWriter(new File(fileName)); StreamResult result = new StreamResult(writer);

Di sini, kami memberi tahu transformator bahwa hasilnya adalah aliran file. Tapi, kita bisa menggunakan jenis java.io.Writer atau java.io.OutputStream untuk membuat StreamResult. Misalnya, kita bisa menggunakan StringWriter untuk membuat String yang kemudian bisa dicatat.

2.3. Membuat File XML

Terakhir, kami akan memberi tahu transformator untuk beroperasi pada objek sumber dan output ke objek hasil:

transformer.transform(source, result);

Ini akhirnya akan membuat file dengan konten dokumen XML:

3. Menyesuaikan Output

Kita dapat menyesuaikan XML yang ditulis ke file dengan menentukan berbagai properti keluaran . Mari jelajahi beberapa di antaranya.

3.1. Cukup Mencetak Output

Sekarang, trafo default kami hanya menulis semuanya ke dalam satu baris, yang tidak menyenangkan untuk dibaca. Memang, akan lebih sulit untuk membaca jika XML-nya besar.

Kita dapat mengkonfigurasi transformator kita untuk pencetakan cantik dengan mengatur properti OutputKeys.INDENT pada transformator:

transformer.setOutputProperty(OutputKeys.INDENT, "yes"); transformer.setOutputProperty("{//xml.apache.org/xslt}indent-amount", "4");

Perhatikan bahwa bersama dengan OutputKeys.INDENT , kami juga telah menetapkan properti jumlah indentasi di sini. Ini akan mengindentasi keluaran dengan benar, karena secara default lekukannya adalah nol spasi.

Dengan set properti di atas, kami mendapatkan hasil yang jauh lebih baik:

3.2. Menghilangkan Deklarasi XML

Terkadang, kami mungkin ingin mengecualikan deklarasi XML.

Kita dapat mengkonfigurasi transformator kita untuk melakukan ini dengan mengatur properti OutputKeys.OMIT_XML_DECLARATION :

transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");

Dan menggunakan trafo kami lagi, kami mendapatkan:

3.3. Properti Output Lainnya

Jadi, selain dari pretty-printing dan menghilangkan deklarasi XML, kita juga dapat menyesuaikan output dengan cara lain:

  • Kita dapat menentukan versi XML menggunakan OutputKeys.VERSION, defaultnya adalah "1.0"
  • Kita dapat menunjukkan pengkodean karakter pilihan kita menggunakan OutputKeys.ENCODING , defaultnya adalah "utf-8"
  • Dan, kami juga dapat menentukan atribut deklarasi tipikal lainnya seperti SYSTEM , PUBLIC , dan STANDALONE .

4. Kesimpulan

Dalam tutorial ini, kami melihat cara mengekspor org.w3c.Document ke file dan cara menyesuaikan output.

Dan, tentu saja, kode sumber yang menyertainya tersedia di GitHub.