Programovanie

Vlastnosti Java v XML

Vlastnosti Java sú základom vývoja Java už mnoho rokov. Aj dnes sa vlastnosti Java používajú v populárnych rámcoch a nástrojoch, ako sú Spring Framework a Ant. Väčšina vlastností Java, ktoré som videl často používané, sa riadi osvedčenou paradigmou name = value. Od J2SE 5 je však ľahké načítať (a ukladať) vlastnosti vo formáte XML.

Podľa mojich skúseností typické súbor vlastností vyzerá nasledovne.

príklady.vlastnosti

url.blog.dustin = // marxsoftware.blogspot.com/ url.javaworld = // www.javaworld.com/ url.coloradosoftwaresummit = // www.softwaresummit.com/ url.otn = // www.oracle.com/ technology / index.html url.rmoug = // www.rmoug.org/ 

J2SE 5 uľahčil načítanie vlastností z XML (a ich ukladanie do XML). Dokumentácia API založená na Javadocu pre triedu Vlastnosti pojednáva o oboch formátoch. Táto dokumentácia zobrazuje DTD použitú na definovanie gramatiky XML vlastností:

DTD nám ukazuje, že vlastnosti uložené v XML musia mať ako koreňový prvok vyžadovaný od dobre tvarovaného XML a môže mať nulu alebo jednu prvky vnorené v tejto koreňovej značke. Z tejto DTD sa tiež dozvedáme, že názov nula až veľa prvkov sú povolené a že an vstup element môže obsahovať telo údajov a jediný pomenovaný atribút kľúč. Na základe tohto DTD by sme mohli napísať kompatibilný súbor vlastností založený na XML ručne, ale ešte ľahší spôsob, ako to vidieť, je načítať v tradičnom súbore vlastností párov meno / hodnota a uložiť ho späť vo formáte XML. To je presne to, čo ďalšia trieda Java, Príklady vlastností, robí.

PropertiesExamples.java

balenie dustin.properties; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.Properties; verejná trieda PropertiesExamples {/ ** konštruktor bez argumentov. * / public PropertiesExamples () {} / ** * Získajte tradičné vlastnosti vo formáte name = value. * * @param filePathAndName Cesta a názov súboru vlastností (bez prípony * .properties). * @return Vlastnosti načítané z poskytnutého súboru. * / public Properties loadTraditionalProperties (final String filePathAndName) {final Properties properties = new Properties (); skúsiť {final FileInputStream in = new FileInputStream (filePathAndName); properties.load (in); in.close (); } catch (FileNotFoundException fnfEx) {System.err.println ("Nepodarilo sa načítať vlastnosti zo súboru" + filePathAndName); } catch (IOException ioEx) {System.err.println ("Pri čítaní z" + filePathAndName) došlo k "IOException"; } návratové vlastnosti; } / ** * Ukladajte poskytované vlastnosti vo formáte XML. * * @param sourceProperties Vlastnosti, ktoré sa majú ukladať vo formáte XML. * @param out OutputStream, do ktorého sa majú zapisovať vlastnosti vo formáte XML. * / public void storeXmlProperties (final Properties sourceProperties, final OutputStream out) {try {sourceProperties.storeToXML (out, "This is easy!"); } catch (IOException ioEx) {System.err.println ("CHYBA pri pokuse o uloženie vlastností do XML!"); }} / ** * Uložte poskytnuté vlastnosti vo formáte XML do poskytnutého súboru. * * @param sourceProperties Vlastnosti, ktoré sa majú ukladať vo formáte XML. * @param pathAndFileName Cesta a názov súboru, do ktorého sa zapíšu * vlastnosti vo formáte XML. * / public void storeXmlPropertiesToFile (final Properties sourceProperties, final String pathAndFileName) {try {FileOutputStream fos = new FileOutputStream (pathAndFileName); storeXmlProperties (sourceProperties, fos); fos.close (); } catch (FileNotFoundException fnfEx) {System.err.println ("CHYBA zápisu do" + pathAndFileName); } catch (IOException ioEx) {System.err.println ("CHYBA pri pokuse o zápis vlastností XML do súboru" + pathAndFileName); }} / ** * Spustí hlavné príklady. * * @param arguments Argumenty príkazového riadku; nikto nepredpokladal. * / public static void main (final argumenty String []) {final PropertiesExamples me = new PropertiesExamples (); konečné vlastnosti inputProperties = me.loadTraditionalProperties ("examples.properties"); me.storeXmlPropertiesToFile (inputProperties, "examples-xml.properties"); }} 

Trieda uvedená vyššie sa načíta v súbore vlastností, ktorý je uvedený vyššie, a potom ho vypíše späť vo formáte XML. Skutočné riadky kódu, ktoré robia väčšinu práce, sú malého počtu, ale vďaka mnohým kontrolovaným výnimkám spojeným so vstupom / výstupom súboru je základňa kódu oveľa väčšia.

Po spustení tohto kódu sa vygeneruje nasledujúci výstup:

examples-xml.properties

  To je ľahké! //www.softwaresummit.com/ //www.rmoug.org/ //marxsoftware.blogspot.com/ //www.javaworld.com/ //www.oracle.com/technology/index.html 

Tento vygenerovaný súbor XML obsahuje rovnaké páry názov / hodnota ako tradičný súbor vlastností zobrazený skôr, dá sa načítať ako tradičná verzia pomocou súboru Properties.loadFromXML a obsahuje komentár, ktorý bol odovzdaný metóde Properties.storeToXML.

Záver

Načítať vlastnosti z XML a uložiť ich ako XML je celkom jednoduché. XML je však v zásade obmedzený na rovnakú paradigmu párov názov / hodnota ako tradičné súbory vlastností. Preto nemôžeme využiť výhody hierarchickej povahy XML na použitie vzťahov zložitejších ako jeden kľúč (názov) k jednej hodnote. Hlavným dôvodom, prečo je možné použiť podporu Java pre vlastnosti založené na XML, je, ak sa XML používalo pre iné nástroje alebo rámce a vlastnosti v XML boli prístupnejšie pre iný nástroj alebo rámec.

Tento príbeh „Vlastnosti Java v XML“ bol pôvodne publikovaný spoločnosťou JavaWorld.

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