Tulis dokumen org.w3.dom ke Fail

1. Gambaran keseluruhan

Bahagian penting dalam pengendalian XML adalah membuat fail XML yang dapat digunakan oleh orang lain.

Semasa mengendalikan XML di Java, kita sering mempunyai contoh dokumen.w3c.dom.Doc yang perlu kita eksport.

Dalam tutorial ringkas ini, kita akan melihat cara menulis Dokumen ke fail baik dalam bentuk sebaris maupun format yang dicetak cantik .

2. Menggunakan Transformer

Pengangkat berat semasa menulis Dokumen ke fail adalah javax.xml.transform.Transformer.

2.1. Membuat Transformer

Oleh itu, mari kita mulakan dengan mendapatkan TransformerFactory . Kami akan menggunakan kilang ini untuk membuat pengubah:

TransformerFactory transformerFactory = TransformerFactory.newInstance()

Properti sistem javax.xml.transform.TransformerFactory menentukan pelaksanaan kilang yang akan dibuat. Akibatnya, harta tanah ini menamakan subkelas konkrit dari kelas abstrak TransformerFactory . Tetapi, jika kita tidak menentukan sifat ini, pengubah hanya akan menggunakan platform lalai.

Perhatikan bahawa sejak Java 9, kita dapat menggunakan TransformerFactory. newDefaultInstance () untuk membuat pelaksanaan lalai sistem-bawaan.

Sekarang kita mempunyai kilang, mari buat Transformer :

Transformer transformer = transformerFactory.newTransformer();

2.2. Menentukan Sumber dan Hasilnya

The Transformer mengubah sumber ke dalam hasilnya. Dalam kes kami, sumbernya adalah dokumen XML dan hasilnya adalah fail output.

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

DOMSource source = new DOMSource(document);

Perhatikan bahawa sumbernya tidak harus keseluruhan dokumen. Selagi XML terbentuk dengan baik, kita boleh menggunakan sub-pokok dokumen.

Seterusnya, kami akan menentukan di mana pengubah harus menulis hasil transformasi:

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

Di sini, kami memberitahu pengubah bahawa hasilnya adalah aliran fail. Tetapi, kita boleh menggunakan jenis java.io.Writer atau java.io.OutputStream untuk membuat StreamResult. Sebagai contoh, kita boleh menggunakan StringWriter untuk membina String yang kemudiannya dapat dilog.

2.3. Membuat Fail XML

Akhirnya, kami akan memberitahu pengubah untuk beroperasi pada objek sumber dan output ke objek hasil:

transformer.transform(source, result);

Ini akhirnya akan membuat fail dengan kandungan dokumen XML:

3. Menyesuaikan Output

Kita dapat menyesuaikan XML yang ditulis ke file dengan menentukan pelbagai sifat output . Mari kita terokai beberapa perkara ini.

3.1. Mencetak Keluaran dengan Cukup

Sekarang, pengubah lalai kami hanya menuliskan semuanya ke satu baris, yang tidak begitu menyenangkan untuk dibaca. Memang lebih sukar untuk dibaca jika XML itu besar.

Kita boleh mengkonfigurasi transformer kita untuk mencetak cantik dengan menetapkan sifat OutputKeys.INDENT pada transformer:

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

Perhatikan bahawa bersama dengan OutputKeys.INDENT , kami juga telah menentukan harta indent-jumlah di sini. Ini akan menandakan output dengan betul, kerana secara lalai lekukannya adalah ruang sifar.

Dengan set sifat di atas, kami mendapat output yang lebih bagus:

3.2. Menghilangkan Deklarasi XML

Kadang-kadang, kita mungkin ingin mengecualikan deklarasi XML.

Kami boleh mengkonfigurasi pengubah kami untuk melakukan ini dengan menetapkan sifat OutputKeys.OMIT_XML_DECLARATION :

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

Dan menggunakan pengubah kami sekali lagi, kami mendapat:

3.3. Sifat Keluaran Lain

Oleh itu, selain mencetak cantik dan menghilangkan deklarasi XML, kita juga dapat menyesuaikan output dengan cara lain:

  • Kita dapat menentukan versi XML menggunakan OutputKeys.VERSION, lalai adalah "1.0"
  • Kami dapat menunjukkan pengekodan watak pilihan kami menggunakan OutputKeys.ENCODING , lalai adalah "utf-8"
  • Dan, kita juga dapat menentukan atribut deklarasi khas lain seperti SISTEM , PUBLIC , dan STANDALONE .

4. Kesimpulan

Dalam tutorial ini, kami melihat cara mengeksport dokumen org.w3c ke fail dan cara menyesuaikan output.

Sudah tentu, kod sumber yang disertakan boleh didapati di GitHub.