Geek tričko zdarma Python týden
Tričko zdarma! Stačí před dobitím bodů použít kód TRIKO15. Více informací zde
Pouze tento sleva až 80% na kurzy Python

Lekce 6 - Úvod do formátu XML v Pythonu

Unicorn College Tento obsah je dostupný zdarma v rámci projektu IT lidem.
Vydávání, hosting a aktualizace umožňují jeho sponzoři.

V minulé lekci, Uložení objektů do CSV v Pythonu část 2, jsme si napsali databázi pomocí textových souborů, přesněji souborů ve formátu CSV. Dnes se v Python tutoriálu zaměříme na formát XML, nejprve si ho popíšeme, v další lekci si ukážeme třídy, které nám Python poskytuje k jeho čtení a zápisu.

Formát XML

Nyní vás zahrnu spoustou pojmů, když něčemu nebudete rozumět, vůbec to nevadí, vše si tu ještě probereme :)

XML (eXtensible Markup Language) je značkovací jazyk, který vyvinulo W3C (organizace, která má na starosti webové standardy). XML je velmi univerzální a je podporováno řadou jazyků i aplikací. Slovo extensible (rozšiřitelný) označuje možnost vytvořit si pomocí XML vlastní jazyk, tím je např. XHTML pro tvorbu webových stránek. XML je jazyk samopopisovací, má takovou strukturu, že poznáme, co která hodnota označuje. Zatímco v CSV se můžeme jen domnívat, co je ta třetí osmička, v XML by nám bylo hned jasné, že je to počet článků uživatele (například).

Nevýhodou formátu je samozřejmě jeho větší velikost, což nám však ve většině případů nevadí. Osobně téměř vždy při výběru formátu sahám po XML, hodí se např. k uložení konfigurace programu, high-score hráčů hry nebo k menší databázi uživatelů. Díky XSD schématům ho můžeme jednoduše zvalidovat a předejít chybám při běhu programu.

XML je možné zpracovávat hned několika způsoby. Obvykle jednoduchým kontinuálním čtením/zápisem nebo pomocí objektové struktury DOM. Došlo to tak daleko, že nám některé nástroje umožňují s XML dokumentem pracovat podobně jako s databází a volat nad ním dotazy. Asi si dokážete představit, že to usnadní práci. Takovým jazykem k dotazování se nad XML soubory je např. XPath.

XML vs. JSON

XML konkuruje formát JSON, který je jednodušší, ale méně populární v obchodních aplikacích. Ten na rozdíl od XML umožňuje snadné logování na konec souboru bez načtení celého dokumentu. Jelikož JSON je zkratka z JavaScript Object Notation a JavaScript je jazyk primárně webový, najdeme tento formát zejména ve webových technologiích.

XML se velmi často používá k výměně dat mezi rozdílnými systémy (např. desktopovou aplikací a webovou aplikací na serveru), proto jak již bylo zmíněno existuje pro něj mnoho knihoven a každý nástroj ho zná a umí s ním pracovat. S tím souvisejí webové služby, SOAP a podobně, čímž se však nyní nebudeme zabývat.

Ukázka XML souboru

Minule jsme si uložili seznam uživatelů do souboru CSV. Ukládalo se jméno, věk a datum registrace. Hodnoty byly za sebou, oddělené středníky. Každý řádek představoval jednoho uživatele.

CSV formát

Obsah souboru vypadal tedy asi takto:

Pavel Slavík;22;21.3.2000
Jan Novák;31;30.10.2012

XML formát

Nezasvěcený z toho nic moc nepozná, že? Udělejme si nyní ekvivalent souboru ve formátu XML:

<?xml version="1.0" encoding="UTF-8" ?>
<uzivatele>
    <uzivatel vek="22">
        <jmeno>Pavel Slavík</jmeno>
        <registrovan>21.3.2000</registrovan>
    </uzivatel>
    <uzivatel vek="22">
        <jmeno>Jan Novák</jmeno>
        <registrovan>30.10.2012</registrovan>
    </uzivatel>
</uzivatele>

Nyní každý vidí, co je v souboru uloženo. Věk jsem zde uložil jako atribut jen proto, abych ukázal, že je XML umí, jinak by mohl být jako element spolu se jménem a registrován. Nyní jsem tedy vyzradil, že jednotlivým prvkům se říká elementy. Ty určitě všichni znáte z HTML, které vychází ze stejných základů jako XML. Elementy jsou většinou párové, tedy otevírací, poté následuje hodnota a uzavírací tag s lomítkem. Elementy mohou obsahovat další elementy, struktura je tedy stromová. Díky tomu není problém do jediného XML dokumentu uložit celou hierarchii objektů.

Na začátku souboru je XML hlavička. Aby byl dokument validní, musí obsahovat právě 1 kořenový element, zde element <uzivatele>, ve kterém jsou zabaleny další elementy. Atributy se píší za název atributu do uvozovek.

Určitě vidíme, že soubor nám nabobtnal, to je daň za to, že vypadá hezky. Kdyby neměl uživatel vlastnosti jen 3, ale např. 30, bylo by vidět, jak CSV formát přestává stačit.

Osobně se s přibývajícími zkušenostmi stále více přikláním k řešením, která jsou přehledná a jednoduchá, i když třeba zabírají více paměti (a to nejen v souborech, ale i ve zdrojovém kódu). Nic není horšího, než když programátor přijde za rok ke svému programu a vůbec neví, co je ten osmý parametr v CSV, kde je na řádku 100 nějakých čísel. Nebo co je to pětirozměrné pole, které je sice hrozně rychlé, ale kdyby si místo něj postavil objektovou strukturu, nemusel by nyní psát program odznovu.

S XML jsme seznámení. V příští lekci, Zápis a čtení XML souborů v Pythonu, se naučíme jak data v tomto formátu zapisovat a jak je poté i načíst.


 

Stáhnout

Staženo 5x (856 B)
Aplikace je včetně zdrojových kódů v jazyce Python

 

 

Aktivity (3)

 

 

Komentáře

Avatar
Martin Turner:15. května 8:47

Ahoj,
určitě s chválou XML souboru souhlasím, ale na obranu CSV musím zmínit, že i tento formát umožňuje tvorbu hlavičky a kdejaký tabulkový editor Ti ho dokáže celkem přehledně zobrazit.
To jen na okraj, jinak pěkný tutoriál.
Díky.

 
Odpovědět 15. května 8:47
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 1 zpráv z 1.