Programiranje

Lastnosti Java v XML

Lastnosti Java so že vrsto let osnovni del razvoja Java. Tudi danes se lastnosti Java uporabljajo v priljubljenih okoljih in orodjih, kot sta Spring Framework in Ant. Večina lastnosti Jave, ki sem jih pogosto uporabljal, sledi paradigmi preizkušeno ime = vrednost. Od J2SE 5 pa je enostavno nalagati (in shranjevati) lastnosti v obliki XML.

Po mojih izkušnjah tipično datoteka lastnosti je videti nekako tako, kot je prikazano v nadaljevanju.

primeri.lastnosti

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 je olajšal nalaganje lastnosti iz XML (in shranjevanje lastnosti v XML). Dokumentacija API-ja na osnovi Javadoc za razred Properties obravnava obe obliki. Ta dokumentacija prikazuje DTD, ki se uporablja za definiranje slovnice XML Properties:

DTD nam pokaže, da morajo imeti lastnosti, shranjene v XML kot korenski element, ki se zahteva za dobro oblikovan XML in ima lahko nič ali eno elementi, ugnezdeni v tej korenski oznaki. Iz tega DTD se tudi naučimo, da se imenuje nič do več elementov dovoljeno in da vstop element lahko vsebuje podatkovno telo in en sam atribut z imenom tipko. Na podlagi tega DTD bi lahko ročno napisali združljivo datoteko z lastnostmi, ki temelji na XML, še lažji način pa je, da jo beremo v tradicionalni datoteki lastnosti parov ime / vrednost in jo shranimo nazaj v obliki XML. To je točno tisto, kar je naslednji razred Java, LastnostiPrimeri, naredi.

PropertiesExamples.java

paket prahu v.lastnosti; uvoz java.io.FileInputStream; uvoz java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; uvoz java.util.Properties; javni razred PropertiesExamples {/ ** konstruktor brez argumentov. * / public PropertiesExamples () {} / ** * Pridobite tradicionalne lastnosti v formatu ime = vrednost. * * @param filePathAndName Pot in ime datoteke lastnosti (brez pripone * .properties). * @return Lastnosti, prebrane iz priložene datoteke. * / public Properties loadTraditionalProperties (končni niz filePathAndName) {lastnosti končnih lastnosti = nove lastnosti (); poskusite {final FileInputStream in = new FileInputStream (filePathAndName); properties.load (in); in.close (); } catch (FileNotFoundException fnfEx) {System.err.println ("Ne morem prebrati lastnosti iz datoteke" + filePathAndName); } catch (IOException ioEx) {System.err.println ("IOException je naletel med branjem iz" + filePathAndName); } vrni lastnosti; } / ** * Shranjene lastnosti shranite v obliki XML. * * @param sourceProperties Lastnosti, ki se shranijo v obliki XML. * @param ven OutputStream, kamor želite zapisati lastnosti, oblikovane v XML. * / public void storeXmlProperties (končne lastnosti sourceProperties, končni OutputStream out) {try {sourceProperties.storeToXML (out, "To je enostavno!"); } catch (IOException ioEx) {System.err.println ("NAPAKA pri poskusu shranjevanja lastnosti v XML!"); }} / ** * Shranjene lastnosti v formatu XML shranite v priloženo datoteko. * * @param sourceProperties Lastnosti, ki se shranijo v obliki XML. * @param pathAndFileName Pot in ime datoteke, v katero bodo zapisane lastnosti, oblikovane v 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 ("NAPAKA piše v" + pathAndFileName); } catch (IOException ioEx) {System.err.println ("NAPAKA pri poskusu zapisovanja lastnosti XML v datoteko" + pathAndFileName); }} / ** * Zažene glavne primere. * * @param argumenti Argumenti ukazne vrstice; nihče ni pričakoval. * / javni statični void glavni (končni argumenti String []) {final PropertiesExamples me = new PropertiesExamples (); končne lastnosti inputProperties = me.loadTraditionalProperties ("examples.properties"); me.storeXmlPropertiesToFile (inputProperties, "examples-xml.properties"); }} 

Zgornji razred se bere v prej našteti datoteki z lastnostmi in nato zapiše nazaj v format XML. Število dejanskih vrstic kode, ki opravi večino dela, je majhno, a številne preverjene izjeme, povezane z vnosom / izhodom datoteke, znatno povečajo osnovo kode.

Ko se ta koda zažene, se ustvari naslednji izhod:

examples-xml.properties

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

Ta generirana datoteka XML vsebuje enake pare ime / vrednost kot tradicionalna datoteka z lastnostmi, prikazana prej, jo je mogoče brati kot tradicionalno različico z uporabo Properties.loadFromXML in vključuje komentar, ki je bil poslan metodi Properties.storeToXML.

Zaključek

Preprosto je naložiti lastnosti iz XML in jih shraniti kot XML. Vendar je XML v bistvu omejen na isto paradigmo parov ime / vrednost kot tradicionalne datoteke lastnosti. Zato hierarhične narave XML ne moremo izkoristiti za uporabo odnosov, ki so bolj zapleteni kot en ključ (ime) do ene vrednosti. Glavni razlog, da lahko uporabimo podporo Jave za lastnosti, ki temeljijo na XML, je, če je bil XML uporabljen za druga orodja ali ogrodja in so bile lastnosti v XML bolj dostopne drugemu orodju ali ogrodju.

To zgodbo, "Lastnosti Java v XML", je prvotno objavil JavaWorld.

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