XML I Properties Fajlovi

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 5

4.

1 XML sintaksa - struktura

XML je softerski i hardverski nezavisna alatka, koja se najviše koristi za smeštanje i prenos
podataka. XML je skraćenica za: “eXtensible Markup Language”, a sam jezik je veoma
sličan HTML-u po svojoj sintaksi/strukturi. Međutim, sam po sebi ne radi ništa! Suština
XML-a jeste da čuva i prenosi podatke - ili da pomogne pri izvršavanju istih aktivnosti.

XML se razlikuje of HTML-a po tome što je HTML napravljen da predstavlja podatke.


Dokle se XML koristi za prenos i smeštanje. Tagovi, ili naznake, nisu definisane u XML-u,
već ih sam korisnik po potrebi definiše.

U primeru koji sledi možemo da sagledamo jedan XML kod:

----------------------------------------------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<knjizara>
<knjiga category="Kulinarstvo">
<naziv lang="en">Italijansko</naziv>
<autor>Giada De Laurentiis</autor>
<godina>2005</godina>
<cena>30.00</cena>
</knjiga>
<knjiga category="Za decu">
<naziv lang="en">Harry Potter</naziv>
<autor>J K. Rowling</autor>
<godina>2005</godina>
<cena>29.99</cena>
</knjiga>
<knjiga category="web">
<naziv lang="en">Learning XML</naziv>
<autor>Erik T. Ray</autor>
<godina>2003</godina>
<cena>39.95</cena>
</knjiga>
</knjizara>
----------------------------------------------------------------------------------------------------------------

Kao što smo već pomenuli, naznake u XML-u su ručno definisane. “Knjiga”, “autor”, i slično
su dati primeri.
XML radi po strukturi drveta - osnovne naznake se dalje dele u pod-naznake. A imena samih
naznaka su definisane od strane korisnika.

----------------------------------------------------------------------------------------------------------------
<izvor>
<pod_naznaka>
<pod_kategorija>....</pod_kategorija>
</pod_naznaka>
</izvor>
----------------------------------------------------------------------------------------------------------------

Takođe, pri pisanju XML koda, sva ostala podešavanja se moraju ručno odraditi. Pa, pri
tome, u prologu se definiše verzija XML-a koja će se koristiti, kao i kod karaktera:

----------------------------------------------------------------------------------------------------------------
<?xml version=”1.0” encoding=”UTF-8”?>
----------------------------------------------------------------------------------------------------------------

Treba istaknuti da su naznake u XML-u osetljive na veličinu slova - ​<Letter>​ je kompletno


druga naznaka od ​<letter>.​

Za razliku od HTML-a, kod kojeg se naznake mogu zatvarati nezavisno od redosleda u kojoj
su otvarane, u XML-u se mora pratiti redosled otvaranja:

----------------------------------------------------------------------------------------------------------------
<!-- Za XML -->

<b><i>Boldovan i italik tekst</i></b>

<!-- Za HTML -->

<b><i>Boldovan i italik tekst</b></i>


----------------------------------------------------------------------------------------------------------------

Iz prethodnog primera možemo takođe uočiti i način pisanja komentara u XML-u, sa ​<!--
tekst komentara ​-->​ naznakama.

Atributi, ili vrednosti osobina, se uvek moraju naznačavati sa znacima navoda. Primer:
----------------------------------------------------------------------------------------------------------------
<poruka date=”12/11/2007”>
<ka>Marjan</ka>
<od>Ilija</od>
</poruka>
----------------------------------------------------------------------------------------------------------------

Određeni karakteri u XML-u imaju posebna naznačavanja. Ako želimo da koristimo, u tekstu
neke naznake, znakove nejednakosti, “i”, apostrofe ili znakove navoda, moramo da koristimo
sledeće:

● &lt;​ - Za “manje od” ​(<);​


● &gt; ​- Za “veće od” ​(>);​
● &amp;​ - Za ​“&”​;
● &apos; ​- Za apostrofe ​(‘)​;
● &quot;​ - Za znakove navoda ​(“)​;

XML prepoznaje ako korisnik upiše više razmaka, gde HTML više razmaka prevodi u samo
jedan.

Pri imenovanju XML naznaka, mora se obratiti pažnje na to da su ti elementi osetljivi na


veličinu slova i da moraju da počnu sa slovom ili donjom crtom. Takođe, ne smeju da počinju
sa slovima “xml” u bilo kakvom formatu. Imena mogu da sadrže slova, brojeve, crtice, donje
crte i tačke, ali ne smeju i razmake.

4.2 Obrada XML podataka u Javi

U javi koristimo “Java API” za obradu XML podataka, ili: Java XML Application
Programming Interfaces. Interfejsi za programiranje aplikacija nude mogućnost provere i
gramatičkog rasčlanjivanja XML dokumenata, a sastoji se od tri osnovna dela:

● DOM​ - Document Object Model;


● SAX​ - Simple API for XML;
● StAX​ - Streaming API for XML;

DOM interfejs​ je najednostavniji za razumeti. Ovaj interfejs rasčlanjuje čitav XML


dokument i pravi identičnu reprezentaciju u memoriji tog dokumenta, koristeći klase i modele
iz drugog nivoa specifikacija jezgra DOM-a.
Rasčlanjivač koji DOM koristi se zove “DocumentBuilder”, jer pravi kopiju, ili
reprezentaciju, dokumenta unutar memorije. “javax.xml.parsers.DocumentBuilder” je
napravljen od “javax.xml.parsers.DocumentBuilderFactory”. Sam “DocumentBuilder” pravi
instancu - strukturu drveta koja sadrži čvorove u XML dokumentu. Svaki čvor strukture
implementira definisani interfejs. Najbitniji čvorovi su oni koji sadrže elemente sa atributima,
i same tekstove između naznaka.

SAX interfejs​ koristi “javax.xml.parsers.SAXParserFactory” da bi napravio SAX


rasčlanjivač, koji se zove “SAXParser”. Za razliku od DOM rasčlanjivača, on ne pravi
reprezentaciju XML dokumenta unutar memorije, već poziva metode - instance.

“DefaultHandler” klasa implementira “ContentHandler”, “ErrorHandler”, “DTDHandler” i


“EntityResolver” interfejse, pri čemu je “ContentHandler” najčešće korišćen od strane
klijenata. To je zbog toga jer taj interfejs sadrži sve metode koja SAX rasčlanjivač koristi.
Najvažnije metode unutar tog interfejsa su:

● “startDocument()”​ i ​“endDocument()”​ - koriste se za naznačivanje početka i kraja


dokumenta;
● “startElement()” ​i ​“endElement()”​ - koriste se za naznačivanje početka i kraja
elemenata dokumenta;
● “characters()”​ - koristi se za tekst unutar elemenata dokumenta.

4.3 Upotreba konfiguracionih fajlova

U Javi možemo da koristimo XML konfiguracione fajlove. To ostvarujemo koristeći


“ImportResource” naredbu, uz koju dostavljamo lokaciju XML konfiguracionog fajla kojeg
želimo da iskoristimo. Ili, ako želimo da iskoristimo više konfiguracionih fajlova, koristimo
naredbu “Import”:

----------------------------------------------------------------------------------------------------------------
package com.memorynotfound.spring.core;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.ImportResource;

@Configuration
@Import({ DbConfig.class })
@ImportResource("classpath:app-config.xml")
public class AppConfig {
}
----------------------------------------------------------------------------------------------------------------
Java properties​ fajlovi se koriste za podešavanje parametara aplikacije. Te vrste fajlova su
konstruisane koristeći par ključa i vrednosti, pri čemu su oba predstavljena kao “String”
objekti.

Pisanje podataka unutar nekog fajla se vrši na sledeći način:

----------------------------------------------------------------------------------------------------------------
Properties properties = new Properties();
properties.setProperty(“server_name”, “javatutorial.net”);
properties.setProperty(“request_timeout”, “5000”);
OutputStream output = new FileOutputStream(“config.properties”);
properties.store(output, null);
----------------------------------------------------------------------------------------------------------------

Dokle se čitanje podataka sa nekoj “properties” fajla izvršava sledećim postupkom:

----------------------------------------------------------------------------------------------------------------
InputStream input = new FileInputStream(“config.properties”);
Properties properties = new Properties();
properties.load(input);
String ServerNamere = properties.getProperty(“server_name”);
----------------------------------------------------------------------------------------------------------------

You might also like