Programavimas

„Java“ ypatybės XML formatu

„Java“ ypatybės daugelį metų buvo „Java“ kūrimo pagrindas. Net ir šiandien „Java“ ypatybės yra naudojamos tokiose populiariose sistemose ir įrankiuose kaip „Spring Framework“ ir „Ant“. Dauguma „Java“ ypatybių, kurias mačiau naudojusi, dažnai atitinka patikrintą pavadinimo = vertės paradigmą. Tačiau nuo J2SE 5 buvo lengva įkelti (ir išsaugoti) ypatybes XML formatu.

Mano patirtis rodo, kad tipiškas ypatybių failas atrodo panašiai kaip parodyta toliau.

pavyzdžiai.savybės

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

J2SE 5 palengvino ypatybių įkėlimą iš XML (ir ypatybių saugojimą į XML). „Javadoc“ pagrįstoje „Ypatybių“ klasės API dokumentacijoje aptariami abu formatai. Šiame dokumente parodyta DTD, naudojama apibrėžiant ypatybių XML gramatiką:

DTD rodo, kad XML saugomos savybės turi būti kaip šaknies elementas reikalingas gerai suformuotai XML ir gali turėti nulį arba vieną šioje šakninėje žymoje įdėti elementai. Iš šio DTD taip pat sužinome, kad nuo nulio iki daugelio elementų įvardijama yra leidžiama ir kad įrašas elemente gali būti duomenų turinys ir vienas atributas, pavadintas Raktas. Remdamiesi šiuo DTD, galėtume ranka parašyti suderinamą XML pagrindu sukurtų ypatybių failą, tačiau dar lengvesnis būdas tai pamatyti yra perskaityti tradicinėse vardų / reikšmių porų ypatybių byloje ir išsaugoti ją XML formatu. Tai yra būtent tai, ką kita „Java“ klasė, YpatybėsPavyzdžiai, daro.

YpatybėsPavyzdžiai.java

pakuotės dulkės.savybės; importuoti java.io.FileInputStream; importuoti java.io.FileNotFoundException; importuoti java.io.FileOutputStream; importuoti java.io.IOException; importuoti java.io.OutputStream; importuoti java.util.Nuosavybės; public class PropertiesExamples {/ ** konstruktorius be argumentų. * / public PropertiesExamples () {} / ** * Gaukite tradicines ypatybes „name = value“ formatu. * * @param filePathAndName Ypatybių failo kelias ir pavadinimas (be plėtinio * .properties). * @return ypatybės perskaitytos iš pateikto failo. * / public Properties loadTraditionalProperties (final String filePathAndName) {final Properties properties = new Properties (); pabandykite {final FileInputStream in = new FileInputStream (filePathAndName); savybės.krautas (in); in.uždaryti (); } gaudyti (FileNotFoundException fnfEx) {System.err.println ("Nepavyko nuskaityti ypatybių iš failo" + filePathAndName); } gaudyti (IOException ioEx) {System.err.println ("IOException susidūrė skaitant iš" + filePathAndName "); } grąžinti savybes; } / ** * Saugokite pateiktas ypatybes XML formatu. * * @param sourceProperties Ypatybės, kurios bus saugomos XML formatu. * @param out OutputStream, kur galima rašyti XML formato ypatybes. * / public void storeXmlProperties (final Properties sourceProperties, final OutputStream out) {try {sourceProperties.storeToXML (out, "Tai lengva!"); } gaudyti (IOException ioEx) {System.err.println ("KLAIDA bando saugoti ypatybes XML!"); }} / ** * Pateiktame faile saugokite pateiktas ypatybes XML formatu. * * @param sourceProperties Ypatybės, kurios bus saugomos XML formatu. * @param pathAndFileName Failo, į kurį bus įrašytos XML formato * ypatybės, kelias ir pavadinimas. * / public void storeXmlPropertiesToFile (final Properties sourceProperties, final String pathAndFileName) {pabandykite {FileOutputStream fos = new FileOutputStream (pathAndFileName); storeXmlProperties (sourceProperties, fos); fos.uždaryti (); } sugauti (FileNotFoundException fnfEx) {System.err.println ("KLAIDA rašoma" + pathAndFileName); } sugauti (IOException ioEx) {System.err.println ("KLAIDA bando rašyti XML ypatybes į failą" + pathAndFileName); }} / ** * Vykdomi pagrindiniai pavyzdžiai. * * @param argumentai Komandinės eilutės argumentai; niekas nenumatė. * / public static void main (final String [] argumentai) {final PropertiesExamples me = new PropertiesExamples (); galutinės ypatybės inputProperties = me.loadTraditionalProperties ("pavyzdžiai.savybės"); me.storeXmlPropertiesToFile (inputProperties, "pavyzdžiai-xml.properties"); }} 

Aukščiau parodyta klasė perskaitoma anksčiau išvardytame ypatybių faile ir tada vėl įrašoma XML formatu. Faktinių kodo eilučių, atliekančių didžiąją dalį darbo, yra nedaug, tačiau daugybė patikrintų išimčių, susijusių su failo įvestimi / išvestimi, kodo bazę padaro daug didesnę.

Paleidus šį kodą, sukuriama ši išvestis:

pavyzdžiai-xml.properties

  Tai lengva! //www.softwaresummit.com/ //www.rmoug.org/ //marxsoftware.blogspot.com/ //www.javaworld.com/ //www.oracle.com/technology/index.html 

Šiame sugeneruotame XML faile yra tos pačios pavadinimo / vertės poros, kaip ir anksčiau parodytų tradicinių ypatybių faile. Jį galima perskaityti panašiai kaip tradicinę versiją naudojant „Properties.loadFromXML“, ir apima komentarą, kuris buvo perduotas metodui „Properties.storeToXML“.

Išvada

Gana paprasta įkelti ypatybes iš XML ir saugoti jas kaip XML. Tačiau XML iš esmės apsiriboja ta pačia pavadinimo / vertės porų paradigma kaip ir tradicinių ypatybių failai. Todėl mes negalime pasinaudoti XML hierarchiniu pranašumu, kad galėtume naudoti sudėtingesnius ryšius nei vienas raktas (vardas) vienai vertei. Pagrindinė priežastis, kodėl galima naudoti „Java“ palaikymą XML pagrįstoms ypatybėms, yra ta, kad XML buvo naudojamas kitiems įrankiams ar sistemoms, o XML ypatybės buvo labiau prieinamos kitam įrankiui ar sistemai.

Šią istoriją „Java ypatybės XML“ iš pradžių paskelbė „JavaWorld“.

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