Igor - Furjan - Rad S XML-om U Javi

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 13

SVEUILITE U ZAGREBU

FAKULTET ORGANIZACIJE I INFORMATIKE


VARADIN

Igor Furjan
Matini broj: 40147/11R
Studij: Primjena informacijske tehnologije u poslovanju

Rad s XML-om u Javi


SEMINARSKI RAD IZ KOLEGIJA ELEKTRONIKO POSLOVANJE

Mentor:
Doc. dr. sc. Sandro Geri

Varadin, lipanj 2013.

Sadraj
1. Uvod ...................................................................................................................................... 1
2. Openito o Javi ...................................................................................................................... 2
3. Osnovni pojmovi XML dokumenata ..................................................................................... 3
4. Upotrba XML-a u Javi ........................................................................................................... 6
4.1. SAX analizator ............................................................................................................... 7
4.2. DOM analizator .............................................................................................................. 8
4.3. Apache Digester ............................................................................................................. 9
5. Zakljuak ............................................................................................................................. 10
6. Literatura ............................................................................................................................. 11

1. Uvod
Ovaj seminarski rad pod nazivom Rad s XML-om u Javi govori o upotrbi XML-a u
Javi. Na poetku seminara govori se openito o Javi, zatim su objanjeni osnovni pojmovi
vezani uz XML datoteke. Nadalje se opisuje upotreba XML-a u Javi i nakon toga spomenuti
su i objanjeni SAX analizator, DOM analizator i Apache Digister.
XML je udruen s programskim jezikom Java od njegovih poetaka i stoga Java
posjeduje najpotpuniji skup dostupnih API-ja (Application Program Interface) koji
omoguuju upotrebu XML-a direktno unutar Java koda .
SAX (Simple API for XML) ini sistem, zasnovan na dogaajima, za analizu XML podataka.
Proces se sastoji od itanja dokumenta od poetka i izdvajanja podataka u korisne dijelove; na
svakom koraku procesa, SAX definira dogaaje koji mogu nastupiti. [McLaughlin 2000]
Dok SAX nudi pristup podacima unutar XML dokumenta, DOM je osmiljen da prui
znaenje rukovanju tim podacima. DOM prikazuje stablo XML dokumenta. Kako je stablo
odavno poznat strukturni prikaz podataka, lako je izvesti prolazak i obradu kroz strukturu
stabla u raznim programskim jezicima, pa tako i u Javi. [Wood 1999]
Raznim programskim jezicima mogu se obraivati XML dokumenti, ali je Java jezik koji
idealno nadopunjuje XML. Kratko reeno: Java prua prenosivi kod, a XML prenosive
podatke. Gledani odvojeno, obje tehnologije su izuzetne, ali imaju ogranienja. Java od
razvojnog programera zahtijeva smiljanje formata za prijenos podatka i formata za
prezentaciju podataka, te upotrebu tehnologija koje ne omoguavaju odvajanje sadraja od
prezentacije, kao to je JavaServer Pages (JSP).
XML je jednostavno meta-podatak, i bez programa kao to su parseri i XSL procesori u
osnovi je bez koristi. Meutim, Java i XML povezani upravo ine rjeenje problema do kojih
je
doveo
dosadanji
razvoj
web
aplikacija.
Java ima ugraene sve osnovne funkcije za rukovanje mrenim protokolima (TCP/IP, FTP i
HTTP). Zahvaljujui ovoj ugraenoj mrenoj podrci i dodajui tome mogunost koritenja
ulazno - izlaznih podataka u standardnom XML obliku neovisnom o platformi, programi
pisani u Javi mogu bez problema pristupati podacima koji su pohranjeni irom Interneta na
razliitim tipovima posluitelja, ime se jo vie pridonosi integraciji Interneta pod jedno
zajedniko suelje. [S.J. Chapman: Java for Engineers and Scientists, Prentice Hall, Upper
Saddle River, New Jersey, 2000.]

2. Openito o Javi
Java je jedan od najpopularnijih programskih jezika u raznim podrujima, od
programiranja igara pa do vrlo vanih aplikacija za trgovanje na burzama. Java je programski
jezik ope namjene koji se koristi u svim industrijama i za gotovo sve vrste aplikacija.
injenici da je Java jedan od najpopularnijih programskih jezika pridnosi informacija da u
svijetu postoji oko 6 milijuna (2011.godina) profesionalnih java programera.
Programski jezik Java dizajnirao je James Gosling 1995. godine dok je radio u tvrtci Sun
Microsystems. Njemu je bio cilj stvoriti jednostavniju alternativu jeziku C++ koja e biti
neovisna o platformi. Kad govorimo o Javi, moemo rei da se radi o objektno orijentiranom
programskom jeziku. Pojam objektno orijentirano programiranje znai metodu razvijanja
programske opreme kod koje su programi koncipirani poput grupe objekata koji meusobno
djeluju.
Programski jezik Java jednostavniji je za koritenje od programskog jezika C ili C++.
Jedna od bitnijih znaajki je neovisnost o platformi. Ovo omoguuje da se kod napisan u
Java-i izvodi bez unoenja promjena u razliitim okruenjima na raunalima (Windows,
UNIX, ). Java osim samog programskog jezika ujedno definira i cijelo okruenje u kojem
se programi izvode, nudei pri tome vrlo velik broj gotovih biblioteka i funkcija. Zahvaljujui
tome, pisanje programa moe ii vrlo brzo i efikasno.
Java kod prevodi se u u tzv. bytecode kojeg pokree operacijski sustav, drugi
program ili ureaji pomou Java interpretera. Bytecode nije izvrni kod, ve
visokooptimizirani skup instrukcija dizajniran za izvravanje unutar Java izvrnog sustava
koji se naziva Java virtualni stroj (Java virtual machine JVM) koji predstavlja interpreter
za bytecode. Jo jedna u nizu znaajki programskog jezika JAVA bila bi vienitnost, a znai
podrku za vienitno programiranje. Java je dizajnirana za izvravanje u distribuiranom
okruenju, prvenstveno na internetu.
Danas Java tehnologija nudi developerima izbor od 3 izdanja Java platforme u
ovisnosti od njihovih potreba,a to su sljedee:
1. Java Standard Edition je razvijen prvenstveno za razvijanje sigurnih i portabilnih
aplikacija za desktop platforme ukljuujui Macintosh, Linux, Microsoft Windows i Sun
Solaris. Portabilnost je tu glavna znaajka, jer u dananjim heterogenim okruenjima
kompatibilnost Java rjeenja u odnosu na ciljanu platformu je izvrstan adut.
2. Java Enterprise Edition prvenstveno je namijenjen za srednje i visoko kopleksna
poslovna rjeenja. J2EE je skup ogromnog broja frameworka i tehnologija (JSP, Servlets,
EJB...) koji razvoj kompleksnih rjeenja ine jednostavnijim.
3. Java Micro Edition je rjeenje koje developerima prua robusno i fleksibilno
okruenje za izradu aplikacija namijenjenih mobitelima i raznim drugim pametnim ureajima
(smart devices). Java Micro Edition developerima prua fleksibilno radno okruenje, visoku
sigurnost, ugraene mrene protokole i podrku za mrene i lokalne aplikacije.

3. Osnovni pojmovi XML dokumenata


XML je kratica od ''extensible markup language''. ''Extensible'' u prijevodu znai rastezljiv
ili fleksibilan, dok je ''markup language'' jezik koji u sebi kombinira neki tekst i informacije o
tom tekstu. Princip zapisa podataka u XML-u je vrlo jednostavan: odgovarajui podaci se
uokviruju oznakama koje ga opisuju i imaju poznato, ili lako shvatljivo znaenje. Zbog naina
na koji je realiziran, XML ima veliki broj korisnih prednosti. Jedna od njegovih najvanijih
prednosti jest to to ga jednako dobro mogu razumjeti i stroj i ovjek, takoer podrava
Unicode, samim time i gotovo sve znakove poznate ovjeku.
U svojoj osnovi XML dokument je obina datoteka koja sadri neki tekst, te se moe
prepoznati na bilo kojoj platformi i, budui da je usklaen s meunarodnim normama, moe se
koristiti bilo gdje u svijetu. Jedan od veih nedostataka je to to je XML kodiranje podataka
relativno veliko u usporedbi s binarnom reprezentacijom tih istih podataka to ima za posljedicu
da je obraivanje dokumenta puno sporije. Takoer nije definiran niti jedan tip podataka tako da
se jednako predstavljaju npr. cijeli broj (integer) i obian tekst(string).
Zbog toga to ga bilo koja platforma moe prepoznati, kao i zbog injenice da opisuje
podatke koje sadri, XML je izrazito pogodan za razmjenu podataka izmenu dva sustava. Isto
tako XML se moe koristiti i za pohranjivanje podataka.
Svaki XML dokument sastoji se od 2 glavna dijela. Prvi dio zove se prolog (zaglavlje)
i u njemu se navode podaci koja se verzija koristi te koja kodna stranica. Nakon prologa
slijedi sadraj dokumenta. U tom se dijelu nalaze podaci koje dokument sadri. Podaci se
uokviruju oznakama. Elementi opisuju odreeni dio XML dokumenta, sastoje se od korisnog
sadraja omeenog oznakama.
Svaki XML dokument mora zadovoljavati 2 glavna uvjeta : on mora biti dobro formiran
(well-formed) i mora biti valjan (valid). Prvi uvjet zahtijeva da svaka poetna oznaka bude
terminirana odgovarajuom zavrnom . Takoer zahtijeva da elementi u dokumentu budu
hijerarhijski organizirani ili ugnijeneni, tj. da jedan element bude potpuno sadran u nekom
drugom elementu i da postoji jedan element koji u sebi sadri sve druge elemente korijenski ili
root element. Svaki XML dokument mora imati jedan korijenski ili root element koji
uokviruje kompletan sadraj.

Primjer XML dokumenta:


<?xml version ="1.0" ?>
(1)
<!DOCTYPE narudzba SYSTEM "C:\\xml\dtds\narudzba.dtd">
(2)
<Narudzba>
<PorukaID type="Autogenerate"/>
(3)
<Datum>19991105</Datum>
(4)
<OdnosiSeNa TipDokumenta="UgovorBR" DokID="123456"/>
<Kupac>
<EAN>5012345678900</EAN>
</Kupac>
<Dobavljac>
<EAN>6012345678900</EAN>
</Dobavljac>
<OstaleStrane Uloga="Dostavljac">
<EAN>7012345678900</EAN>
</ OstaleStrane >
<OstaleStrane Uloga="PodlanoOd">
<EAN>7012345678950</EAN>
</ OstaleStrane >
<OstaleStrane Uloga="DostavljenoDo">
<Ime>Prodavaonica ABC</Ime>
<AdresaUlica>Kralja Tomislava bb</AdresaUlica>
<AdresaMjesto>Zagreb</AdresaMjesto>
<AdresaPosta>10000</AdresaPosta>
</OstaleStrane>
<Predmet>
<PredmetID Agencija="EAN">37534656</PredmetID>
<PredmetOpis>akalica</PredmetOpis>
<Kolicina>100</Kolicina>
</Predmet>
</Narudzba>

Prva linija poruke (1) ukazuje da se radi o XML poruci i kojoj se verziji XML-a
pridrava. Druga linija poruke (2) identificira dokument s definicijama tipovima koji je
korten za provjeru ispravnosti strukture poruke. Znakovi vee od i manje od koriste se
za odvajanje XML oznaka (markup) od sadraja. Prva rije XML oznake upuuje na ime
XML elementa. Rije prije svake oznake = (3) predstavlja ime atributa, a tekst u dvostrukim
navodnicima nakon oznake = predstavlja vrijednost atributa. Tekst koji nije izmeu znakova
vee od i manje od predstavlja sadraj elementa (4).
U XML-u se koriste sheme kako bi se unaprijed odredilo koje elemente taj dokument
smije sadravati i u kojem odnosu oni moraju biti. Dvije najpoznatije vrste shema su:
1. DTD (Document Type Definition) - definira: -koji elementi su na raspolaganju,

-slijed elemenata,
-kardinalnost pojavljivanja nekog elementa,
-doputene strukture ugnjeivanja elemenata,
-atribute koje odreeni element moe imati,
-vrijednosti koje atributi mogu poprimiti.
4

Primjer DTD:
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT

addressBook (person)+>
person (name, street, city, email*)>
name (title?, first-name, last-name)>
title (#PCDATA)>
last-name (#PCDATA)>
first-name (#PCDATA)>
street (#PCDATA)>
city (#PCDATA)>
e-mail (#PCDATA)>

2. XML shema- sastoji se od definicija tipova elemenata (koje mogu biti izvedene iz drugih
definicija) i deklaracija elemenata.
Primjer XML scheme:

<xsd:schema xmlns:xsd=http://www.w3.org/2001/XMLSchema>
<xsd:element name=person type=personType/>
<xsd:complexType name=personType>
<xsd:sequence>
<xsd:element name=name type=string/>
<xsd:element name=street type=string/>
<xsd:element name=city type=string/>
<xsd:element name=email type=string
minOccurs=0 maxOccurs=unbounded/>
</xsd:sequence>
</xsd:complexType>
<xsd:schema>

4. Upotrba XML-a u Javi


Dva najvanija API-a za pristup XML dokumentima u Javi su SAX i DOM, a takoer je
razvijen i Apache Digester. U nastavku ovog rada nalaze se najbitnije informacije o njima.
Kako se Java programi mogu razviti na jednoj platformi, a primjeniti na drugoj, i XML podaci
mogu biti oblikovani na jednoj i preneeni na drugu platformu. Kombiniranje Jave i XML-a donosi
dvostruku prenosivost, i koda i podataka. Gdje god se Java programi mogu pokrenuti, oni takoer
mogu pristupiti i XML podacima. To omoguuje efikasnu Java i XML interoperabilnost na
razliitim platformama.
Java i XML mogu biti uvedeni kroz razliite preglednike za programiranje aplikacija (eng.
application programming interfaces, APIs):
1. API niskog nivoa (eng. Low-Level APIs) su najosnovniji nain pristupaXML
podacima od strane Java programa. Tekstualnom sadraju XMLdokumenata se moe
pristupiti direktno. To zahtijeva i veliko znanje o XML od strane razvojnogodjela.
Dokumenti koji su XMLstruktuirani sve se vie koriste u infrastrukturnim zadacima
ili komunikacijskim porukama. Primjeri API-ija niskog nivoa ukljuuju Simple XML
API (SAX),Document Object Model (DOM), i Java API za XML razlanjavanje.
(JAXP)

2. API visokog nivoa (eng. High level) skrivaju podatke o detaljima XML strukture i pravila,
i doputaju Java klasama rad impliciranom poslovnom logikom dokumenta. To je laki
nain za rjeavanje specifinih poslovnih problema, te je postao poprilino
popularan kod programera. Razliiti pristupi se koristi kod API-ja
visokog nivoa. Mapirani podaci prenose mape podataka sa XML dokumenata prema Java
klasama, dok podaci u porukama koriste XML kao medij za razmjenupodataka. Primjer su
Simpe Object Accesss Protocol (SOAP) iXML Remote Procedure Call (XMLRPC).

4.1.

SAX analizator

SAX (Simple API for XML) je skup API a koji obrauju XML dokument serijski , element
po element. Razredi koje sadri SAX API i naini na koji meudjeluju prikazani su na slici 1.

Slika 1. SAX API

Proces poinje od razreda SAXParserFactory koji se koristi za generiranje instance


razreda SAXParser. Proces analize poinje pozivom odgovarajue parse metode tog razreda.
Nakon toga analizator poinje itati XML dokument i poziva odreene metode za svaki
dogaaj na koji naieu dokumentu. Metode koje analizator zove pri analizi definirane su
sueljima ContentHandler, ErrorHandler, DTDHandler i EntityResolver. . ContentHandler
ima definirane
metode koje se pozivaju na poetku i na kraju samog dokumenta, te metode koje se pozivaju
na poetku i na kraju elemenata. ErrorHandler sadri metode koje definiraju ponaanje
analizatora pri pojavi greaka. DTD Handler ima metode za procesiranje DTD sheme, a
EntityResolver metode koje se pozivaju pri referenciranju nekog entiteta zadanog pomou
URI a. Na zadatak je da te metodeimplementiramo i tako odredimo kako e se analizator
ponaati pri svakom dogaaju na koji naie.
Takoer je definiran razred Default Handler koji ima implementirane sve metode od
gore spomenuta 4 suelja sa metodama koje nita ne rade. Pomou tog razreda moemo
implementirati samo one metode koje nas zbilja zanimaju, tako da 'pregazimo' njihovu
implementaciju u Default Handler-u. Obino se metodi parse preko argumenata predaje
dokument koji parsiramo i instanca razreda Default Handler.

4.2.

DOM analizator

DOM (Document Object Model) je skup API a koji obrauje XML dokument na
nain da ga cijelog proita i pohrani u memoriji u obliku stabla (slika2.) . Svaki vor tog
stabla sadri neku od komponenti dokumenta. Koristi se razred DocumentBuilderFactory koji
onda stvara novu instancu DocumentBuilder-a koji se tada koristi za stvaranje odgovarajueg
DOM stabla u memoriji pozivom metode parse() za neki XML dokument. DOM analizator je
puno jednostavniji za koritenje od SAX analizatora, ali zahtjeva vie, ponekada i previe
memorije.
DOM analizator prikazan je na slici 2. Koja se nalazi u nastavku.

Slika 2. DOM API

Parsiranje XML dokumenta DOM metodom ostvaruje se pomou ugraenih klasa


DocumentBuilder koja izvornu XML datoteku pretvara u objekt Document, te
DocumentBuilderFactory stvara instance klase DocumentBuilder. Nakon uitavanja
dokumenta u Document objekt mogue je izdvojiti i obraditi eljene elemente.

4.3.

Apache Digester

U paketu org.apache.commons.digester definiran je razred Digester pomou kojeg na


jednostavn nain analiziramo, obraujemo neki XML dokument. Analiza se obavlja na nain
da Digesteru zadamo odreena pravila po kojima e ponaati u trenutku nailaska na neki
odreeni element. Pomou tih pravila Digester stvara odgovarajue strukture podataka koje
tada sprema na svoj interni stog.
to se tie XML-a u Javi, standardni SAX i DOM analizatori zahtijevaju dosta koda
istoga u nekim sluajevima nisu previe praktini. Iz tih razloga preporuuje se uporaba alata
Apache Digester alata koji se najee koristi za inicijaliziranje odreenih
struktura podataka u memoriji iz zadanog XML dokumenta.
Ono to daje prednost Apache Digesteru naspram SAX i DOM analizatora je
-relativna mala koliina koda za definiranje pravila za analizu
-prepoznaje kontekst u kojem se nalaze komponete jer mu se predaje hijerarhija
elementa kao argumnet iako je potrebno dosta koda za pripremu strukture za pohranu
podataka
Za koritenje Apache Digestera potrebno je prvo u classpath uvesti sljedee
biblioteke: Digester, BeanUtils, Collections, Logging i XML parser birajui izmeu SAX 2.0
ili JAXP 1.1 (Java API for XML Parsing) Postoje dva open source parsera koja su
odgovarajua pri koritenju sa Digesterom: Crimson i Xerces.

Koraci u radu s Apache Digesterom:


-Na poetku nakon uvoza svih potrebnih biblioteka, potrebno je kreirati strukturu
elementa XML dokumenta unutar razvojnog okruja.
-Postaviti sve set i get metode svih atributa unutar elementa
-Kreirati kolekciju, listu za spremanje podataka razliitih elementa, te njihov ispis
-Kreirati razred koji sadri (main) metodu koja e pokrenuti cijeli proces pristupa
stranici i analizu samog XML dokumenta
-Takoer unutra tog razreda potrebno je kreirati metodu koja e zadanom analizatoru
(Digesteru) zadati pravila po koji e se analizirati document

5. Zakljuak
Na kraju ovog rada moemo zakljuiti da je XML jedan jednostavan i fleksibilan alat.
Jedna od velikih prednosti XML je to ga jednako dobro mogu razumijeti i ovjek i raunalo jer
koristei Unicode znakove postaje prihvatljiv i razumljiv ovjeku. Jo jedna prednost je ta da je
XML neovisan o platformi na kojoj se koristi. Zbog svojih dobrih strana, XML je postao
standardni nain pohrane podataka na Internetu. Osim dobrih strana XML ima i nekoliko loih
strana. Jedan od veih nedostataka je to to je XML kodiranje podataka relativno veliko u
usporedbi s binarnom reprezentacijom tih istih podataka to ima za posljedicu da je obraivanje
dokumenta puno sporije. U XML-u ne postoji niti jedan tip podataka tako da se jednako
predstavljaju npr. cijeli broj (integer) i obian tekst (string).
Dva najvanija API-a za pristup XML dokumentima u Javi su SAX i DOM, a takoer je
razvijen i Apache Digester. SAX API temelji se na serijskom itanju XML dokumenata.
DOM API proita XML dokument odjednom i pohrani ga u obliku stabla, vorovi stabla su
komponente dokumenta. Kod Apache Digestera dokument se obrauje tako da se zadaju
pravila po kojima se ravna Digester. Koritenje Apache Digestera je praktinije i bre u
odnosu na SAX API i DOM API.

10

6. Literatura
1.Yakov Fain- Programiranje JAVA, Dobar plan. Zagreb, 2011.
Internet izvori:
1. http://docs.oracle.com/javaee/6/tutorial/doc/docinfo.html
2. http://commons.apache.org/
3. http://www.w3.org/
4. http://www.saxproject.org/
5. http://www.oracle.com/technetwork/java/index.html
6. http://laris.fesb.hr/mcml-1.htm

11

You might also like