Napíšte org.w3.dom. Dokument do súboru

1. Prehľad

Dôležitou súčasťou manipulácie s XML je vytváranie súborov XML, ktoré môžu spotrebovať iní.

Pri spracovávaní XML v Jave budeme mať často inštanciu org.w3c.dom.Doklad že musíme vyvážať.

V tomto rýchlom návode uvidíme, ako napíšeme a Dokument do súboru ako v riadku, tak aj v pekne vytlačenom formáte.

2. Použitie transformátora

Ťažký zdvíhač pri písaní Dokuments do súborov je javax.xml.transform.Transformer.

2.1. Vytvorenie transformátora

Začnime teda získaním a TransformerFactory. Túto továreň použijeme na vytvorenie transformátora:

TransformerFactory transformerFactory = TransformerFactory.newInstance ()

Vlastnosť systému javax.xml.transform.TransformerFactory určuje, ktorá továrenská implementácia sa má vytvoriť. V dôsledku toho táto vlastnosť pomenúva konkrétnu podtriedu TransformerFactory abstraktná trieda. Pokiaľ ale túto vlastnosť nedefinujeme, transformátor jednoducho použije predvolenú platformu.

Upozorňujeme, že od verzie Java 9 môžeme používať TransformerFactory. newDefaultInstance () na vytvorenie vstavanej implementácie predvoleného systému.

Teraz, keď máme továreň, vytvorme Transformátor:

Transformátor transformátor = transformerFactory.newTransformer ();

2.2. Zadanie zdroja a výsledku

The Transformátor transformuje zdroj na výsledok. V našom prípade je zdrojom dokument XML a výsledkom je výstupný súbor.

Najskôr uveďme zdroj transformácie. Tu použijeme našu Dokument na zostavenie zdroja DOM:

Zdroj DOMSource = nový DOMSource (dokument);

Upozorňujeme, že zdrojom nemusí byť celý dokument. Pokiaľ je XML správne sformovaný, môžeme použiť podstrom dokumentu.

Ďalej určíme, kam má transformátor zapísať výsledok transformácie:

Spisovateľ FileWriter = nový FileWriter (nový súbor (názov súboru)); Výsledok StreamResult = nový StreamResult (zapisovač);

Tu hovoríme transformátoru, že výsledkom je tok súborov. Môžeme však použiť akýkoľvek druh java.io.Spisovateľ alebo java.io.OutputStream vytvoriť StreamResult.Mohli by sme napríklad použiť a StringWriter postaviť a String ktoré sa potom dajú prihlásiť.

2.3. Vytvorenie súboru XML

Nakoniec povieme transformátoru, aby pracoval so zdrojovým objektom a výstupom do výsledného objektu:

transformátor.transformácia (zdroj, výsledok);

Týmto sa nakoniec vytvorí súbor s obsahom dokumentu XML:

3. Prispôsobenie výstupu

XML zapísaný do súboru môžeme prispôsobiť zadaním rôznych výstupných vlastností. Poďme preskúmať niekoľko z nich.

3.1. Pekná tlač výstupu

Teraz náš predvolený transformátor jednoducho napísal všetko do jedného riadku, čo sa nie je také príjemné čítať. Skutočne by bolo ešte ťažšie čítať, keby boli XML veľké.

Náš transformátor môžeme nakonfigurovať na peknú tlač nastavením hodnoty OutputKeys.INDENT vlastnosť na transformátore:

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

Všimnite si, že spolu s OutputKeys.INDENT, špecifikovali sme tiež zarážka-suma majetok tu. Týmto sa výstup správne odsadí, pretože štandardne je odsadenie nulové medzery.

Vďaka vyššie uvedeným vlastnostiam získame oveľa krajší výstup:

3.2. Vynechanie vyhlásenia XML

Niekedy môžeme chcieť vylúčiť vyhlásenie XML.

Náš transformátor môžeme nakonfigurovať tak, aby to robil nastavením OutputKeys.OMIT_XML_DECLARATION nehnuteľnosť:

transformer.setOutputProperty (OutputKeys.OMIT_XML_DECLARATION, "áno");

A keď znovu použijeme náš transformátor, dostaneme:

3.3. Ostatné vlastnosti výstupu

Okrem peknej tlače a vynechania deklarácie XML teda môžeme výstup prispôsobiť aj inými spôsobmi:

  • Verziu XML môžeme určiť pomocou OutputKeys.VERSION, predvolená hodnota je „1,0“
  • Naše preferované kódovanie znakov môžeme označiť pomocou OutputKeys.ENCODING, predvolená hodnota je „utf-8“
  • A môžeme určiť aj ďalšie typické atribúty deklarácie ako SYSTÉM, VEREJNÉa STANDALONE.

4. Záver

V tomto návode sme videli, ako exportovať súbor org.w3c.Dokument do súboru a ako prispôsobiť výstup.

Sprievodný zdrojový kód je samozrejme k dispozícii na serveri GitHub.


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