Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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

V předešlém cvičení, Řešené úlohy k 1.-5. lekci práce se soubory v Pythonu, jsme si procvičili nabyté zkušenosti z předchozích lekcí.

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 XML formátu zapisovat a jak je poté i načíst.


 

Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

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

 

Předchozí článek
Řešené úlohy k 1.-5. lekci práce se soubory v Pythonu
Všechny články v sekci
Soubory a práce s nimi v Pythonu
Přeskočit článek
(nedoporučujeme)
Zápis a čtení XML souborů v Pythonu
Článek pro vás napsal MQ .
Avatar
Uživatelské hodnocení:
54 hlasů
Používám hlavně Python a zajímám se o Deep Learning a vše kolem.
Aktivity