|
||||||||||||||||||||||||||||||||||||||||||||||||
Menu
Distributions (131)
Software (10844)
|
Perl (136) - XML - DOM a SAX přístupyNaťukněme stručně několik témat souvisejících s XML. Bude to jen úvod, ze kterého by mělo vycházet další studium.
Použití XML::LibXML - reprezentace pomocí DOMPředstavme si velmi stručně ještě jeden z nejlepších modulů pro práci s XML, kterým je XML::LibXML od českého autora Petra Pajase. Umí parsovat XML soubory jako DOM. DOM je aplikační rozhraní pro čtení nebo zápis obsahu a struktury XML dokumentů. Opět budeme pracovat se souborem ukazka.xml.
Následující kód parsuje soubor ukazka.xml a načte data do objektu.
Pro opětovný výpis dat ve formátu XML nyní budeme volat metodu toString.
Velmi stručně se podívejme, jak přidávat nové elementy. Budeme k tomu potřebovat odkaz na kořenový element.
Přidejme nejprve další knihu.
Poté dovnitř můžeme přidat elementy pro autora a název.
Do těchto elementů již můžeme vepsat data.
Pro další podobné metody lze nahlédnout do dokumentace. Modul XML::LibXML je velmi komplexní a umí obrovské množství věcí. Pro zájemce je k dispozici dokumentace. SAX - postupné zpracování XML dokumentuJeště se stručně podívejme, jak lze pracovat s nástrojem SAX. Ten nabízí trochu odlišný přístup na XML dokument. SAX chápe XML jako tok dat a událostí. Každý element vyvolá příslušnou událost a na základě nich postupně můžeme zpracovávat data. XML::LibXML má SAX rozhraní, avšak je pouze simulované, protože data jsou tak jako tak načteny do paměti. Je třeba se poohlédnout zase po něčem novém. Podívejme se blíže na XML::SAX::ExpatXS.
Na programátorovi je určit ke každé události, jak se na ni má reagovat. My jsme v příkladu použili standardní XML::SAX::Writer, který vypíše na výstup XML. Rozšiřováním XML::SAX::Base pomocí navrhování handlerů můžeme definovat vlastní reagování na události. Funguje to tak, že přetížíme některé z metod, které jsou uvedené v dokumentaci. Zkusme přetížit metodu start_element, která je volána vždy poté, kdy narazíme na první z páru elementů. Můžeme pomocí SUPER zdědit chování nadřízené třídy nebo nějak jinak manipulovat s daty.
Stojí za to se podívat, co vlastně v proměnné $data máme.
Podívejme se orientačně, jak vypadá výstup pro elementy autor a foto.
Abychom si také ukázali nějaký příklad vlastního handleru, zkusíme vypsat stromový seznam všech otevíracích a uzavíracích elementů. Jak tedy bude vypadat náš handler? Vytvoříme dvě metody - jednu pro otevírací elementy a druhou pro uzavírací. Z proměnné $data získáme snadno název elementu. Také budeme uchovávat hloubku zanoření.
Nyní tento handler použijeme. V úvodním programu nahradíme XML::SAX::Writer za náš MujHandler.
A výsledek?
Nyní si lze snadno představit, jak přizpůsobivý nástroj máme.
|
Search Software
Search Google
|
||||||||||||||||||||||||||||||||||||||||||||||
©Pavel Kysilka - 2003-2024 | maillinuxsoft.cz | Design: www.megadesign.cz |