Zpracování XML v Javě

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Jazyk Java společně s XML tvoří symbiózu. Java je přenositelný jazyk a XML je přenositelný formát pro popis dat. Díky této symbióze v Javě existuje velká podpora zpracováni XML pomocí mnoha knihoven.

Nejčastější akce prováděné při zpracování XML jsou: * Načítaní XML elementu * Generování nových elementu nebo oprava stávajících * Zápis do XML dokumentu * Transformace XML do jiných formátů, například do HTML

Výše definované akce chceme nějakým způsobem zpracovat. Nejčastěji je zpracujeme pomoci parseru. +more Parsery se v nějaké podobě nacházejí v knihovnách každého moderního programovacího jazyka. V Javě od verze 1. 3 můžeme XML dokumenty zpracovávat pomocí dvou hlavních způsobů:.

* Přístup založený na proudovém zpracování * Přístup založený na stromové struktuře

Proudové zpracování

Princip proudového zpracování je založen na tom, že parser postupně čte XML dokument a pro každou ucelenou část vyvolá událost, kterou my zpracujeme námi implementovaným kódem. V Javě tento přístup je implementován pomoci knihovny SAX(Simple API for XML)

Výhody proudového zpracování

velice rychlé načítaní dokumentu * malá paměťová náročnost * jednoduché pro použiti * zpracování aktuální části dokumentu nezávisí na již zpracovaných částech * každá událost vyvolá korespondující metodu, kterou implementuje programátor

Nevýhody proudového zpracování

dokument je zpracováván sekvenčně, což znamená, že se nelze při čtení vracet zpět * princip obsluhy události představuje nízko úrovňové zpracování vyžadující množství doplňujícího kódu. * funkčnost je velice omezena - většinu musí implementovat programátor

Zpracování XML pomoci SAX

Neboli Simple Api for XML. Toto zpracování je definováno několika rozhraními v Java Core API popsané v balíku org. +morexml. sax. Každá XML značka je v aplikačním kódu reprezentovaná jako událost ,přičemž analyzátor čte XML dokument a generuje posloupnost událostí reprezentující dokument. Programátor píše kód, kterým zpracuje sérii událostí.

Níže lze vidět ukázka zpracování dat pomoci SAX

Hello, world!

SAX parser vygeneruje následující posloupnost události:

1.Start document

2.Start element: doc

3.Start element: pozdrav, attributes: barva (value: blue)

4.Characters: Hello, world!

5.End element: pozdrav

6.End element: doc

7.End document

Níže lze vidět hlavní kostru kódu zpracovávající XML pomoci SAX. Tento kód vytvoří objekt parseru, pomocí kterého můžeme dokument dále zpracovávat.

// Hlavni kod zpracovani XML pomoci SAX import org.xml.sax.*; import org.xml.sax.helpers.*; import javax.xml.parsers.*;

public class VerifikatorJidloSAX { private static final String SOUBOR = "jidlo.xml";

public static void main(String [] args){ try { SAXParserFactory spf = SAXParserFactory. newInstance; spf. +moresetValidating(false); SAXParser saxLevel1 = spf. newSAXParser; XMLReader parser = saxLevel1. getXMLReader;.

parser. setErrorHandler(new ChybyZjisteneParserem); parser. +moresetContentHandler(new DefaultHandler); parser. parse(SOUBOR); System. out. println(SOUBOR + "precten bez chyb"); } catch(Exception e){ e. printStackTrace; } } }.

Zpracování parsovaného XML dokumentu

Zpracování dokumentu provedeme tak, že implementujeme z balíčku org. xml. +moresax několik rozhraní našimi třídami a tyto objekty předáme parseru pomoci jeho set metod. Mezi jeho nejpoužívanější rozhraní patří.

* ErrorHandler - Reakce na chyby * ContentHandler - rozhraní pro zpracování xml elementu * Attributes - Rozhraní pro zpracování xml atributů. Nejpouživanější metody jsou z rozhraní ContentHandler. +more * startDocument vykoná akci na začátku dokumentu * startElement tato metoda je volána při načtení počáteční značky konkrétní xml značky * characters vrací obsah elementu * endElement tato metoda se zavolá při načtení koncové značky.

Níže lze vidět ukázkovou implementaci kódu

public void startElement(String uri, String localName, String qName, Attributes atts){ if(qName.equals(JMENO_ELEMENTU)

true){ // zde zpracujeme obsah náš element }

Zpracování XML pomoci stromové reprezentace dokumentu == Toto zpracování dokumentu je založeno na tom, že se celý XML dokument načte najednou do pamětí a vytvoří se stromová struktura. V Javě lze s ním pracovat pomoci knihovny DOM(Document Object Model).

Výhody zpracování pomoci stromové struktury

celý dokument je najednou dostupný v pamětí * při zpracování dokumentu lze libovolně se vracet, přeskakovat a pohybovat se po stromu dokumentu * je možné nejen číst XML dokument ale i do něj zapisovat * dobrá spolupráce s dotazovacím jazykem XPath. * stejné rozhraní pro různé programovací jazyky (C++, Java, …. +more).

Nevýhody zpracování pomoci stromové struktury

malá rychlost načítaní vůči proudovém zpracování * veliká paměťová náročnost * API je hodně obecné a pro některá použiti zbytečně složité

Zpracování XML pomoci DOM

Neboli Document Object Model. Jedna se o standard připravený konsorciem W3C. +more Parser DOM načte celý XML dokument do paměti a vytvoří z něj stromovou objektovou reprezentaci. Níže je ukázka programu, který umožní vytvořit objekty, kterým přečte soubor jidlo. xml.

// Hlavni kod zpracovani XML pomoci DOM import javax.xml.parsers.*; import org.w3c.dom.*;

public class VerifikatorJidloDOM { private static final String SOUBOR = "jidlo.xml";

public static void main(String [] args){ try{ DocumentBuilderFactory dbf = DocumentBuilderFactory. newInstance; dbf. +moresetValidating(false); DocumentBuilder builder = dbf. newDocumentBuilder; builder. setErrorHandler(new ChybyZjisteneParserem); //nacteni dokumentu do pameti Document doc = builder. parse(SOUBOR); System. out. println(SOUBOR + "precten bez chyb"); } catch(Exception e){ e. printStackTrace; } } }.

Kód uvedený výše vytvoří DOM parser a načte XML dokument do pamětí pro další zpracování.

Literatura

Java a XML - Pavel Herout, nakladatelství Kopp, rok vydání 2007,

Reference

# [url=http://xml.apache.org/]Apache XML Project[/url] # [url=http://www.w3c.org/]World Wide Web Consortium[/url]

Kategorie:XML Kategorie:Java

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top