Programmēšana

Java rekvizīti XML

Java īpašības daudzus gadus ir bijušas Java attīstības pamatprincipi. Pat šodien Java īpašības tiek izmantotas populāros ietvaros un rīkos, piemēram, Spring Framework un Ant. Lielākā daļa Java rekvizītu, kurus esmu redzējis, bieži izmanto pārbaudīto vārdu = vērtību paradigmu. Tomēr kopš J2SE 5 ir bijis viegli ielādēt (un saglabāt) rekvizītus XML formātā.

Pēc manas pieredzes tipisks rekvizītu fails izskatās apmēram tāds, kāds parādīts tālāk.

piemēri.pašības

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

J2SE 5 ļāva ērti ielādēt rekvizītus no XML (un rekvizītus saglabāt uz XML). Rekvizītu klases dokumentācijā, kas balstīts uz Javadoc, tiek apspriesti abi formāti. Šajā dokumentācijā parādīts DTD, kas izmantots, lai definētu Properties XML gramatiku:

DTD parāda, ka XML saglabātajām īpašībām ir jābūt kā saknes elements, kas vajadzīgs labi izveidotam XML, un tam var būt nulle vai viens šajā saknes tagā ligzdoti elementi. No šī DTD mēs arī uzzinām, ka nosaukums ir nulle līdz daudziem elementiem ir atļauts un ka ieraksts elements var saturēt datu ķermeni un vienu atribūtu ar nosaukumu taustiņu. Pamatojoties uz šo DTD, mēs varētu ar roku uzrakstīt saderīgu uz XML balstītu rekvizītu failu, taču vēl vienkāršāks veids, kā to redzēt, ir lasīt tradicionālā nosaukumu / vērtību pāru rekvizītu failā un saglabāt to atpakaļ XML formātā. Tas ir tieši tas, ko nākamā Java klase, RekvizītiPiemēri, dara.

RekvizītiPiemēri.java

iepakojums dustin.pašības; importēt java.io.FileInputStream; importēt java.io.FileNotFoundException; importēt java.io.FileOutputStream; importēt java.io.IOException; importēt java.io.OutputStream; importēt java.util.Īpašības; public class PropertiesPiemēri {/ ** konstruktors bez argumentiem. * / public PropertiesExamples () {} / ** * Iegūstiet tradicionālos rekvizītus nosaukuma = vērtības formātā. * * @param filePathAndName Īpašumu faila ceļš un nosaukums (bez paplašinājuma * .properties). * @return Properties nolasīt no norādītā faila. * / public Properties loadTraditionalProperties (final String filePathAndName) {final Properties properties = new Properties (); mēģiniet {final FileInputStream in = new FileInputStream (filePathAndName); īpašības. slodze (in); iekš. aizvērt (); } catch (FileNotFoundException fnfEx) {System.err.println ("Nevarēja nolasīt rekvizītus no faila" + filePathAndName); } catch (IOException ioEx) {System.err.println ("IOException radās, lasot no" + filePathAndName); } atgriešanās rekvizīti; } / ** * Saglabājiet piedāvātos rekvizītus XML formātā. * * @param sourceProperties Īpašības, kas jāsaglabā XML formātā. * @param out OutputStream, uz kuru rakstīt XML formatētas īpašības. * / public void storeXmlProperties (final Properties sourceProperties, final OutputStream out) {mēģiniet {sourceProperties.storeToXML (out, "Tas ir vienkārši!"); } catch (IOException ioEx) {System.err.println ("KĻŪDA mēģina saglabāt rekvizītus XML!"); }} / ** * Saglabājiet norādītos rekvizītus XML formātā norādītajā failā. * * @param sourceProperties Īpašības, kas jāsaglabā XML formātā. * @param pathAndFileName Faila ceļš un nosaukums, kurā tiks ierakstīti XML formāta * rekvizīti. * / public void storeXmlPropertiesToFile (final Properties sourceProperties, final String pathAndFileName) {mēģiniet {FileOutputStream fos = new FileOutputStream (pathAndFileName); storeXmlProperties (sourceProperties, fos); fos.slēgt (); } catch (FileNotFoundException fnfEx) {System.err.println ("KĻŪDA raksta adresē" + pathAndFileName); } catch (IOException ioEx) {System.err.println ("KĻŪDA mēģina rakstīt failā XML īpašības" + pathAndFileName); }} / ** * Izpilda galvenos piemērus. * * @param argumenti Komandrindas argumenti; neviens nav paredzējis. * / public static void main (final String [] argumenti) {final PropertiesExamples me = new PropertiesExamples (); galīgās rekvizīti inputProperties = me.loadTraditionalProperties ("piemēri.īpašības"); me.storeXmlPropertiesToFile (inputProperties, "piemēri-xml.properties"); }} 

Iepriekš parādītā klase nolasa iepriekš uzskaitīto rekvizītu failu un pēc tam to atkal izraksta XML formātā. Faktisko koda rindiņu, kas veic lielāko daļu darba, skaits ir mazs, taču daudzi pārbaudītie izņēmumi, kas saistīti ar faila ievadi / izvadi, padara koda bāzi daudz lielāku.

Palaidot šo kodu, tiek ģenerēta šāda izeja:

piemēri-xml.properties

  Tas ir vienkārši! //www.softwaresummit.com/ //www.rmoug.org/ //marxsoftware.blogspot.com/ //www.javaworld.com/ //www.oracle.com/technology/index.html 

Šajā ģenerētajā XML failā ir tādi paši nosaukuma / vērtības pāri kā tradicionālajā rekvizītu failā, kas parādīts iepriekš, to var izlasīt tāpat kā tradicionālo versiju, izmantojot Properties.loadFromXML, un tas ietver komentāru, kas tika nodots metodei Properties.storeToXML.

Secinājums

Ir diezgan vienkārši ielādēt rekvizītus no XML un saglabāt tos kā XML. Tomēr XML būtībā aprobežojas ar to pašu nosaukuma / vērtības pāru paradigmu kā tradicionālie rekvizītu faili. Tāpēc mēs nevaram izmantot XML hierarhijas priekšrocības, lai vienā vērtībā izmantotu sarežģītākas attiecības nekā viena atslēga (nosaukums). Galvenais iemesls, kāpēc varētu izmantot Java atbalstu uz XML balstītām īpašībām, ir tas, ka XML tika izmantots citiem rīkiem vai ietvariem un XML īpašības bija pieejamākas citam rīkam vai ietvaram.

Šo stāstu “Java rekvizīti XML” sākotnēji publicēja JavaWorld.

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