Napišite datoteku org.w3.dom.Dokumenta u datoteku

1. Pregled

Važan dio XML rukovanja je stvaranje XML datoteka koje drugi mogu konzumirati.

Prilikom rukovanja XML-om u Javi, često ćemo imati primjerak org.w3c.dom.Dokument da moramo izvoziti.

U ovom brzom vodiču, vidjet ćemo kako napisati a Dokument u datoteku kako u retku, tako i u prilično ispisanom formatu.

2. Korištenje transformatora

Dizač dizača prilikom pisanja Dokuments na datoteke je javax.xml.transform.Transformer.

2.1. Izrada transformatora

Pa, krenimo s dobivanjem a TransformerFactory. Koristit ćemo ovu tvornicu za izradu transformatora:

TransformerFactory transformerFactory = TransformerFactory.newInstance ()

Svojstvo sustava javax.xml.transform.TransformerFactory određuje koju tvorničku implementaciju treba stvoriti. Slijedom toga, ovo svojstvo imenuje konkretnu podrazred TransformerFactory apstraktni razred. Ali, ako ne definiramo ovo svojstvo, transformator će jednostavno koristiti zadanu platformu.

Imajte na umu da od Java 9 možemo koristiti TransformerFactory. newDefaultInstance () za stvaranje ugrađene sistemske zadane implementacije.

Sad kad imamo tvornicu, kreirajmo Transformator:

Transformatorski transformator = transformerFactory.newTransformer ();

2.2. Određivanje izvora i rezultata

The Transformator pretvara izvor u rezultat. U našem slučaju izvor je XML dokument, a rezultat je izlazna datoteka.

Prvo, odredimo izvor transformacije. Ovdje ćemo upotrijebiti naš Dokument za konstrukciju DOM izvora:

DOMSource izvor = novi DOMSource (dokument);

Imajte na umu da izvor ne mora biti cijeli dokument. Sve dok je XML dobro oblikovan, možemo koristiti podstablo dokumenta.

Dalje ćemo odrediti gdje transformator treba zapisati rezultat transformacije:

FileWriter Writer = novi FileWriter (nova datoteka (Ime datoteke)); Rezultat StreamResult = novi StreamResult (pisac);

Ovdje kažemo transformatoru da je rezultat tok datoteka. Ali, možemo koristiti bilo koju vrstu java.io.Pisac ili java.io.OutputStream stvoriti StreamResult.Na primjer, mogli bismo koristiti a StringWriter konstruirati a Niz koji se tada mogu zabilježiti.

2.3. Izrada XML datoteke

Na kraju ćemo reći transformatoru da radi na izvornom objektu i izlazi na rezultatni objekt:

transformer.transform (izvor, rezultat);

Ovo će napokon stvoriti datoteku sa sadržajem XML dokumenta:

3. Prilagođavanje rezultata

XML zapisan u datoteku možemo prilagoditi određivanjem različitih izlaznih svojstava. Istražimo nekoliko od njih.

3.1. Lijepo ispis rezultata

Sada je naš zadani transformator jednostavno sve napisao u jedan redak, što nije baš ugodno za čitanje. Dapače, bilo bi još teže čitati da je XML velik.

Svoj transformator možemo konfigurirati za lijepi ispis postavljanjem OutputKeys.INDENT svojstvo na transformatoru:

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

Primijetite da zajedno s OutputKeys.INDENT, također smo naveli uvlaka-iznos imanje ovdje. Ovo će ispravno uvući izlaz, jer je uvlačenje po zadanom nula razmaka.

S gore postavljenim svojstvima dobivamo puno ljepši rezultat:

3.2. Izostavljanje XML deklaracije

Ponekad bismo možda htjeli izuzeti XML deklaraciju.

Naš transformator možemo konfigurirati da to učini postavljanjem Izlazni ključevi.OMIT_XML_DECLARATION svojstvo:

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

I ponovnim korištenjem našeg transformatora dobivamo:

3.3. Ostala svojstva izlaza

Dakle, osim lijepog ispisa i izostavljanja XML deklaracije, izlaz možemo prilagoditi i na druge načine:

  • Verziju XML možemo odrediti pomoću OutputKeys.VERSION, zadana vrijednost je "1,0"
  • Pomoću možemo naznačiti svoje preferirano kodiranje znakova Izlazni ključevi.KODIRANJE, zadana vrijednost je "utf-8"
  • Također, možemo odrediti i druge tipične atribute deklaracije poput SUSTAV, JAVNOST, i SAMOSTALAN.

4. Zaključak

U ovom uputstvu vidjeli smo kako izvesti org.w3c.Dokumenta u datoteku i kako prilagoditi izlaz.

I, naravno, pripadajući izvorni kod dostupan je na GitHubu.


$config[zx-auto] not found$config[zx-overlay] not found