Narzędzia informatyczne w językoznawstwie
Perl - Przetwarzanie XML
Marcin Junczys-Dowmunt junczys@amu.edu.pl
Zakład Logiki Stosowanej http://www.logic.amu.edu.pl
7. maja 2008
Perl a XML
I 3515 modułów w CPAN zawiera w nazwie skrót XML
I Perl jest językiem przeznaczonym do przetwarzania tekstu
I Dokumenty XML to pliki tekstowe
I Perl jest silnie związany z WWW, podobnie jak XML
Perl a XML
I 3515 modułów w CPAN zawiera w nazwie skrót XML
I Perl jest językiem przeznaczonym do przetwarzania tekstu
I Dokumenty XML to pliki tekstowe
I Perl jest silnie związany z WWW, podobnie jak XML
Perl a XML
I 3515 modułów w CPAN zawiera w nazwie skrót XML
I Perl jest językiem przeznaczonym do przetwarzania tekstu
I Dokumenty XML to pliki tekstowe
I Perl jest silnie związany z WWW, podobnie jak XML
Perl a XML
I 3515 modułów w CPAN zawiera w nazwie skrót XML
I Perl jest językiem przeznaczonym do przetwarzania tekstu
I Dokumenty XML to pliki tekstowe
I Perl jest silnie związany z WWW, podobnie jak XML
Generowanie danych XML
I Najbardziej podstawowy sposób tworzenia plików XML to generowanie dokumentów ”na piechotę”.
I Dokumenty XML są plikami tekstowymi, możemy więc korzystać ze standardowych funkcji Perla z zakresu przetwarzania tekstu.
I W przypadku większych fragmentów tekstu, korzystanie z zapisu łańcuchów znakowych w cudzysłowie jest niewygodne.
I Można wtedy korzystać z tzw. here-documents.
I here-document to zapis, który mówi, że od nowej linii po identyfikatorze poprzedzonym znakami << aż do kolejnego napotkania identyfikatora należy traktować wszystko jako tekst ujęty w podwójnym cudzysłowie.
I Wewnątrz here-document działa interpolacja zmiennych.
Generowanie danych XML
I Najbardziej podstawowy sposób tworzenia plików XML to generowanie dokumentów ”na piechotę”.
I Dokumenty XML są plikami tekstowymi, możemy więc korzystać ze standardowych funkcji Perla z zakresu przetwarzania tekstu.
I W przypadku większych fragmentów tekstu, korzystanie z zapisu łańcuchów znakowych w cudzysłowie jest niewygodne.
I Można wtedy korzystać z tzw. here-documents.
I here-document to zapis, który mówi, że od nowej linii po identyfikatorze poprzedzonym znakami << aż do kolejnego napotkania identyfikatora należy traktować wszystko jako tekst ujęty w podwójnym cudzysłowie.
I Wewnątrz here-document działa interpolacja zmiennych.
Generowanie danych XML
I Najbardziej podstawowy sposób tworzenia plików XML to generowanie dokumentów ”na piechotę”.
I Dokumenty XML są plikami tekstowymi, możemy więc korzystać ze standardowych funkcji Perla z zakresu przetwarzania tekstu.
I W przypadku większych fragmentów tekstu, korzystanie z zapisu łańcuchów znakowych w cudzysłowie jest niewygodne.
I Można wtedy korzystać z tzw. here-documents.
I here-document to zapis, który mówi, że od nowej linii po identyfikatorze poprzedzonym znakami << aż do kolejnego napotkania identyfikatora należy traktować wszystko jako tekst ujęty w podwójnym cudzysłowie.
I Wewnątrz here-document działa interpolacja zmiennych.
Generowanie danych XML
I Najbardziej podstawowy sposób tworzenia plików XML to generowanie dokumentów ”na piechotę”.
I Dokumenty XML są plikami tekstowymi, możemy więc korzystać ze standardowych funkcji Perla z zakresu przetwarzania tekstu.
I W przypadku większych fragmentów tekstu, korzystanie z zapisu łańcuchów znakowych w cudzysłowie jest niewygodne.
I Można wtedy korzystać z tzw. here-documents.
I here-document to zapis, który mówi, że od nowej linii po identyfikatorze poprzedzonym znakami << aż do kolejnego napotkania identyfikatora należy traktować wszystko jako tekst ujęty w podwójnym cudzysłowie.
I Wewnątrz here-document działa interpolacja zmiennych.
Generowanie danych XML
I Najbardziej podstawowy sposób tworzenia plików XML to generowanie dokumentów ”na piechotę”.
I Dokumenty XML są plikami tekstowymi, możemy więc korzystać ze standardowych funkcji Perla z zakresu przetwarzania tekstu.
I W przypadku większych fragmentów tekstu, korzystanie z zapisu łańcuchów znakowych w cudzysłowie jest niewygodne.
I Można wtedy korzystać z tzw. here-documents.
I here-document to zapis, który mówi, że od nowej linii po identyfikatorze poprzedzonym znakami << aż do kolejnego napotkania identyfikatora należy traktować wszystko jako tekst ujęty w podwójnym cudzysłowie.
I Wewnątrz here-document działa interpolacja zmiennych.
Generowanie danych XML
I Najbardziej podstawowy sposób tworzenia plików XML to generowanie dokumentów ”na piechotę”.
I Dokumenty XML są plikami tekstowymi, możemy więc korzystać ze standardowych funkcji Perla z zakresu przetwarzania tekstu.
I W przypadku większych fragmentów tekstu, korzystanie z zapisu łańcuchów znakowych w cudzysłowie jest niewygodne.
I Można wtedy korzystać z tzw. here-documents.
I here-document to zapis, który mówi, że od nowej linii po identyfikatorze poprzedzonym znakami << aż do kolejnego napotkania identyfikatora należy traktować wszystko jako
Generowanie danych XML - Przykład
1 my @ p e r s o n s = (
{ f _ n a m e = > " T o m a s z ", s _ n a m e = > " K o w a l s k i " } , { f _ n a m e = > " B a r t o s z ", s _ n a m e = > " N o w a k " } );
5
my $ x m l = " <? xml v e r s i o n = \ " 1 . 0 \ " ? > \ n ";
$ x m l .= " < workers >\ n ";
f o r e a c h my $ p e r s o n ( @ p e r s o n s ) {
$ x m l .= < < X M L E N D ;
10 < person >
< f_name > $person - >{ f _ n a m e } </ f_name >
< s_name > $person - >{ s _ n a m e } </ s_name >
</ person >
X M L E N D
15 }
$ x m l .= " </ workers >\ n ";
p r i n t $ x m l ;
Wczytywanie danych XML - Co to jest parser?
I Przy generowanie dokumentu XML struktura danych narzuca strukturę dokumentu XML.
I Odwrotnie struktura wczytywanego pliku XML ma wpływ na strukturę danych, która powstaje w pamięci komputera.
I Proces odtwarzania struktury hierarchicznej na podstawie danych linearnych nazywamy parsingiem.
I W przypadku XML dotyczy to np. identyfikacji znaczników, zbudowania struktury zagnieżdżenia itp. na podstawie ciągu znaków.
I Parsing zajmuje się składniowym aspektem przetwarzania dokumentów XML.
I Rozróżnia się dwa paradygmaty parsingu XML: parsing odtwarzający strukturę drzewa XML w pamięci, parsing strumieniowy oparty na wydarzeniach.
Wczytywanie danych XML - Co to jest parser?
I Przy generowanie dokumentu XML struktura danych narzuca strukturę dokumentu XML.
I Odwrotnie struktura wczytywanego pliku XML ma wpływ na strukturę danych, która powstaje w pamięci komputera.
I Proces odtwarzania struktury hierarchicznej na podstawie danych linearnych nazywamy parsingiem.
I W przypadku XML dotyczy to np. identyfikacji znaczników, zbudowania struktury zagnieżdżenia itp. na podstawie ciągu znaków.
I Parsing zajmuje się składniowym aspektem przetwarzania dokumentów XML.
I Rozróżnia się dwa paradygmaty parsingu XML: parsing odtwarzający strukturę drzewa XML w pamięci, parsing strumieniowy oparty na wydarzeniach.
Wczytywanie danych XML - Co to jest parser?
I Przy generowanie dokumentu XML struktura danych narzuca strukturę dokumentu XML.
I Odwrotnie struktura wczytywanego pliku XML ma wpływ na strukturę danych, która powstaje w pamięci komputera.
I Proces odtwarzania struktury hierarchicznej na podstawie danych linearnych nazywamy parsingiem.
I W przypadku XML dotyczy to np. identyfikacji znaczników, zbudowania struktury zagnieżdżenia itp. na podstawie ciągu znaków.
I Parsing zajmuje się składniowym aspektem przetwarzania dokumentów XML.
I Rozróżnia się dwa paradygmaty parsingu XML: parsing odtwarzający strukturę drzewa XML w pamięci, parsing strumieniowy oparty na wydarzeniach.
Wczytywanie danych XML - Co to jest parser?
I Przy generowanie dokumentu XML struktura danych narzuca strukturę dokumentu XML.
I Odwrotnie struktura wczytywanego pliku XML ma wpływ na strukturę danych, która powstaje w pamięci komputera.
I Proces odtwarzania struktury hierarchicznej na podstawie danych linearnych nazywamy parsingiem.
I W przypadku XML dotyczy to np. identyfikacji znaczników, zbudowania struktury zagnieżdżenia itp. na podstawie ciągu znaków.
I Parsing zajmuje się składniowym aspektem przetwarzania dokumentów XML.
I Rozróżnia się dwa paradygmaty parsingu XML: parsing odtwarzający strukturę drzewa XML w pamięci, parsing strumieniowy oparty na wydarzeniach.
Wczytywanie danych XML - Co to jest parser?
I Przy generowanie dokumentu XML struktura danych narzuca strukturę dokumentu XML.
I Odwrotnie struktura wczytywanego pliku XML ma wpływ na strukturę danych, która powstaje w pamięci komputera.
I Proces odtwarzania struktury hierarchicznej na podstawie danych linearnych nazywamy parsingiem.
I W przypadku XML dotyczy to np. identyfikacji znaczników, zbudowania struktury zagnieżdżenia itp. na podstawie ciągu znaków.
I Parsing zajmuje się składniowym aspektem przetwarzania dokumentów XML.
I Rozróżnia się dwa paradygmaty parsingu XML: parsing odtwarzający strukturę drzewa XML w pamięci, parsing strumieniowy oparty na wydarzeniach.
Wczytywanie danych XML - Co to jest parser?
I Przy generowanie dokumentu XML struktura danych narzuca strukturę dokumentu XML.
I Odwrotnie struktura wczytywanego pliku XML ma wpływ na strukturę danych, która powstaje w pamięci komputera.
I Proces odtwarzania struktury hierarchicznej na podstawie danych linearnych nazywamy parsingiem.
I W przypadku XML dotyczy to np. identyfikacji znaczników, zbudowania struktury zagnieżdżenia itp. na podstawie ciągu znaków.
I Parsing zajmuje się składniowym aspektem przetwarzania dokumentów XML.
I Rozróżnia się dwa paradygmaty parsingu XML: parsing odtwarzający strukturę drzewa XML w pamięci, parsing strumieniowy oparty na wydarzeniach.
Parsery odtwarzające strukturę drzewiastą dokumentu
I Cały dokument XML jest konwertowany na pojedynczą strukturę danych.
I Podobnie jak sam dokument XML ta struktura danych ma strukturę drzewa, w którym węzły reprezentują elementy, atrybuty, dane tekstowe i inne fragmenty dokumentu XML.
I Parser udostępnia funkcje służące do uzyskania dostępu do danych lub ich manipulacji, np. tworzenie i podczepianie nowych węzłów.
I Cała struktura danych jest przechowywana w pamięci, w przypadku dużych dokumentów XML może to stanowić poważny problem. Struktura danych może zajmować do 30 razy tyle pamięci co postać tekstowa dokumentu XML.
I Takie parsery sprawdzają poprawność dokumentu XML zanim udostępnią dane.
Parsery odtwarzające strukturę drzewiastą dokumentu
I Cały dokument XML jest konwertowany na pojedynczą strukturę danych.
I Podobnie jak sam dokument XML ta struktura danych ma strukturę drzewa, w którym węzły reprezentują elementy, atrybuty, dane tekstowe i inne fragmenty dokumentu XML.
I Parser udostępnia funkcje służące do uzyskania dostępu do danych lub ich manipulacji, np. tworzenie i podczepianie nowych węzłów.
I Cała struktura danych jest przechowywana w pamięci, w przypadku dużych dokumentów XML może to stanowić poważny problem. Struktura danych może zajmować do 30 razy tyle pamięci co postać tekstowa dokumentu XML.
I Takie parsery sprawdzają poprawność dokumentu XML zanim udostępnią dane.
Parsery odtwarzające strukturę drzewiastą dokumentu
I Cały dokument XML jest konwertowany na pojedynczą strukturę danych.
I Podobnie jak sam dokument XML ta struktura danych ma strukturę drzewa, w którym węzły reprezentują elementy, atrybuty, dane tekstowe i inne fragmenty dokumentu XML.
I Parser udostępnia funkcje służące do uzyskania dostępu do danych lub ich manipulacji, np. tworzenie i podczepianie nowych węzłów.
I Cała struktura danych jest przechowywana w pamięci, w przypadku dużych dokumentów XML może to stanowić poważny problem. Struktura danych może zajmować do 30 razy tyle pamięci co postać tekstowa dokumentu XML.
I Takie parsery sprawdzają poprawność dokumentu XML zanim udostępnią dane.
Parsery odtwarzające strukturę drzewiastą dokumentu
I Cały dokument XML jest konwertowany na pojedynczą strukturę danych.
I Podobnie jak sam dokument XML ta struktura danych ma strukturę drzewa, w którym węzły reprezentują elementy, atrybuty, dane tekstowe i inne fragmenty dokumentu XML.
I Parser udostępnia funkcje służące do uzyskania dostępu do danych lub ich manipulacji, np. tworzenie i podczepianie nowych węzłów.
I Cała struktura danych jest przechowywana w pamięci, w przypadku dużych dokumentów XML może to stanowić poważny problem. Struktura danych może zajmować do 30 razy tyle pamięci co postać tekstowa dokumentu XML.
I Takie parsery sprawdzają poprawność dokumentu XML zanim udostępnią dane.
Parsery odtwarzające strukturę drzewiastą dokumentu
I Cały dokument XML jest konwertowany na pojedynczą strukturę danych.
I Podobnie jak sam dokument XML ta struktura danych ma strukturę drzewa, w którym węzły reprezentują elementy, atrybuty, dane tekstowe i inne fragmenty dokumentu XML.
I Parser udostępnia funkcje służące do uzyskania dostępu do danych lub ich manipulacji, np. tworzenie i podczepianie nowych węzłów.
I Cała struktura danych jest przechowywana w pamięci, w przypadku dużych dokumentów XML może to stanowić poważny problem. Struktura danych może zajmować do 30 razy tyle pamięci co postać tekstowa dokumentu XML.
Parsery strumieniowy / zdarzeniowe
I Parsery strumieniowe nie budują drzewa w pamięci, tylko generują strumień zdarzeń, które są przechwytywane oraz przetwarzane na bieżąco przez tzw. funkcje callback.
I Różnym zdarzeniom przydziela się różne funkcje callback.
I Odpowiednie zdarzenia są generowane w momentach gdy parser w trakcie wczytywania natrafia np. na znaczniki otwierające, znaczniki zamykające itp.
I Parser udostępnia dane z dokumentu XML w trakcie przetwarzania dokumentu. Nie musi wczytać całość dokumentu.
I Parser strumieniowy udostępnia dane zanim sprawdzi poprawność składniową dokumentu.
I Wymagania pamięciowe takich parserów są niskie i możemy przetwarzać wielkie dokumenty XML, niestety obsługa jest bardziej skomplikowana.
Parsery strumieniowy / zdarzeniowe
I Parsery strumieniowe nie budują drzewa w pamięci, tylko generują strumień zdarzeń, które są przechwytywane oraz przetwarzane na bieżąco przez tzw. funkcje callback.
I Różnym zdarzeniom przydziela się różne funkcje callback.
I Odpowiednie zdarzenia są generowane w momentach gdy parser w trakcie wczytywania natrafia np. na znaczniki otwierające, znaczniki zamykające itp.
I Parser udostępnia dane z dokumentu XML w trakcie przetwarzania dokumentu. Nie musi wczytać całość dokumentu.
I Parser strumieniowy udostępnia dane zanim sprawdzi poprawność składniową dokumentu.
I Wymagania pamięciowe takich parserów są niskie i możemy przetwarzać wielkie dokumenty XML, niestety obsługa jest bardziej skomplikowana.
Parsery strumieniowy / zdarzeniowe
I Parsery strumieniowe nie budują drzewa w pamięci, tylko generują strumień zdarzeń, które są przechwytywane oraz przetwarzane na bieżąco przez tzw. funkcje callback.
I Różnym zdarzeniom przydziela się różne funkcje callback.
I Odpowiednie zdarzenia są generowane w momentach gdy parser w trakcie wczytywania natrafia np. na znaczniki otwierające, znaczniki zamykające itp.
I Parser udostępnia dane z dokumentu XML w trakcie przetwarzania dokumentu. Nie musi wczytać całość dokumentu.
I Parser strumieniowy udostępnia dane zanim sprawdzi poprawność składniową dokumentu.
I Wymagania pamięciowe takich parserów są niskie i możemy przetwarzać wielkie dokumenty XML, niestety obsługa jest bardziej skomplikowana.
Parsery strumieniowy / zdarzeniowe
I Parsery strumieniowe nie budują drzewa w pamięci, tylko generują strumień zdarzeń, które są przechwytywane oraz przetwarzane na bieżąco przez tzw. funkcje callback.
I Różnym zdarzeniom przydziela się różne funkcje callback.
I Odpowiednie zdarzenia są generowane w momentach gdy parser w trakcie wczytywania natrafia np. na znaczniki otwierające, znaczniki zamykające itp.
I Parser udostępnia dane z dokumentu XML w trakcie przetwarzania dokumentu. Nie musi wczytać całość dokumentu.
I Parser strumieniowy udostępnia dane zanim sprawdzi poprawność składniową dokumentu.
I Wymagania pamięciowe takich parserów są niskie i możemy przetwarzać wielkie dokumenty XML, niestety obsługa jest bardziej skomplikowana.
Parsery strumieniowy / zdarzeniowe
I Parsery strumieniowe nie budują drzewa w pamięci, tylko generują strumień zdarzeń, które są przechwytywane oraz przetwarzane na bieżąco przez tzw. funkcje callback.
I Różnym zdarzeniom przydziela się różne funkcje callback.
I Odpowiednie zdarzenia są generowane w momentach gdy parser w trakcie wczytywania natrafia np. na znaczniki otwierające, znaczniki zamykające itp.
I Parser udostępnia dane z dokumentu XML w trakcie przetwarzania dokumentu. Nie musi wczytać całość dokumentu.
I Parser strumieniowy udostępnia dane zanim sprawdzi poprawność składniową dokumentu.
I Wymagania pamięciowe takich parserów są niskie i możemy przetwarzać wielkie dokumenty XML, niestety obsługa jest bardziej skomplikowana.
Parsery strumieniowy / zdarzeniowe
I Parsery strumieniowe nie budują drzewa w pamięci, tylko generują strumień zdarzeń, które są przechwytywane oraz przetwarzane na bieżąco przez tzw. funkcje callback.
I Różnym zdarzeniom przydziela się różne funkcje callback.
I Odpowiednie zdarzenia są generowane w momentach gdy parser w trakcie wczytywania natrafia np. na znaczniki otwierające, znaczniki zamykające itp.
I Parser udostępnia dane z dokumentu XML w trakcie przetwarzania dokumentu. Nie musi wczytać całość dokumentu.
I Parser strumieniowy udostępnia dane zanim sprawdzi poprawność składniową dokumentu.
Standardowe sposoby przetwarzania XML
I Standardowymi interfejsami do parserów XML dla różnych języków
programowania są np. DOM (Document Object Model) oraz SAX (Simple API for XML).
I Odpowiadają im moduły XML::DOM oraz XML::SAX.
I XML::DOM to interfejs do drzewiastej struktury dokumentu.
I XML::SAX obsługuje parsery strumieniowe.
Standardowe sposoby przetwarzania XML
I Standardowymi interfejsami do parserów XML dla różnych języków programowania są np. DOM (Document Object Model) oraz SAX (Simple API for XML).
I Odpowiadają im moduły XML::DOM oraz XML::SAX.
I XML::DOM to interfejs do drzewiastej struktury dokumentu.
I XML::SAX obsługuje parsery strumieniowe.
Standardowe sposoby przetwarzania XML
I Standardowymi interfejsami do parserów XML dla różnych języków programowania są np. DOM (Document Object Model) oraz SAX (Simple API for XML).
I Odpowiadają im moduły XML::DOM oraz XML::SAX.
I XML::DOM to interfejs do drzewiastej struktury dokumentu.
I XML::SAX obsługuje parsery strumieniowe.
Standardowe sposoby przetwarzania XML
I Standardowymi interfejsami do parserów XML dla różnych języków programowania są np. DOM (Document Object Model) oraz SAX (Simple API for XML).
I Odpowiadają im moduły XML::DOM oraz XML::SAX.
I XML::DOM to interfejs do drzewiastej struktury dokumentu.
I XML::SAX obsługuje parsery strumieniowe.
Przykład dokumentu XML (leksykon.xml)
<?xml version="1.0" encoding="UTF-8"?>
<leksykon>
<wpis nr="1">
<lemat>analiza</lemat>
<informacje>
<część_mowy>rzeczownik</część_mowy>
<rodzaj>żeński</rodzaj>
<semantyka>process</semantyka>
</informacje>
<formy>
<forma p="mian" l="1">analiza</forma>
<forma p="dop" l="1">analizy</forma>
<forma p="cel" l="1">analizie</forma>
...
</formy>
</wpis>
...
</leksykon>
Moduł XML::DOM
1 use XML :: DOM ; use D a t a :: D u m p e r ;
my $ p a r s e r = new XML :: DOM :: P a r s e r ;
my $ d o c = $parser - > p a r s e f i l e (" l e k s y k o n . xml ");
5
my $ n o d e s = $doc - > g e t E l e m e n t s B y T a g N a m e (" f o r m a ");
my $n = $nodes - > g e t L e n g t h ();
for(my $i = 0; $i < $n ; $i ++) {
10 my $ t e x t = $nodes - > i t e m ( $i ) - > g e t F i r s t C h i l d ();
my $ f o r m a = $text - > g e t N o d e V a l u e ();
my $ p r z y = $nodes - > i t e m ( $i ) - > g e t A t t r i b u t e (" p ");
p r i n t " F o r m a : $ f o r m a - P r z y p a d e k : $ p r z y \ n ";
Moduł XML::SAX
1 use XML : : SAX : : E x p a t ;
my $ p a r s e r = XML : : SAX : : E xpa t−>new ( H a n d l e r => MyHandler−>new ( ) ) ; my $ r e f = $ p a r s e r −>p a r s e f i l e (” l e k s y k o n . xml ”) ;
5 p a c k a g e MyHandler ;
sub new {
my $ t y p e =s h i f t; my $ o b j = { d a t a => {} } ; r e t u r n b l e s s $ o b j , $ t y p e ;
10 }
sub s t a r t e l e m e n t { my( $ s e l f , $ p r o p ) = @ ; if( $ p r o p−>{Name} eq ” f o r m a ”) { 15 $ s e l f −>{d a t a}−>{l a s t} =” f o r m a ”;
$ s e l f −>{d a t a}−>{t e x t } =” ”;
$ s e l f −>{d a t a}−>{p r z y p a d e k } = $ p r o p−>{’ A t t r i b u t e s ’}−>{”{}p ”}−>{’ V a l u e ’} ; } }
20 sub c h a r a c t e r s {
my( $ s e l f , $ p r o p ) = @ ;
if ( $ s e l f −>{d a t a}−>{l a s t} eq ” f o r m a ”) {
$ s e l f −>{d a t a}−>{t e x t } .= $ p r o p−>{Data } ; } }
25
sub e n d e l e m e n t {
my( $ s e l f , $ p r o p ) = @ ; if( $ p r o p−>{Name} eq ” f o r m a ”) {
p r i n t ” Forma : $ s e l f −>{d a t a}−>{t e x t } − P r z y p a d e k : $ s e l f −>{d a t a}−>{p r z y p a d e k }\n ”; 30 $ s e l f −>{d a t a}−>{l a s t} =” ”;
} }
XML::Simple
I XML::Simple został stworzony z myślą o plikach konfiguracyjnych zapisanych w XML.
I Moduł ten może służyć do prostych zadań związanych z przetwarzaniem XML.
I Jest to interfejs oparty na strukturze drzewiastej dokumentu.
I Nie ma jednak typowego interfejsu jak w przypadku XML::DOM.
I Dostęp do węzłów odbywa się za pomocą zwykłych
zagnieżdżonych struktur danych, czyli anonimowych tablic i haszów.
I XML::Simple nie radzi sobie z mieszaną treścią, tzn. gdy element zawiera tekst w którym pojawiają się inne elementy. Np. <element> To jest <b>przykład</b> </element> zwraca dziwne wyniki.
XML::Simple
I XML::Simple został stworzony z myślą o plikach konfiguracyjnych zapisanych w XML.
I Moduł ten może służyć do prostych zadań związanych z przetwarzaniem XML.
I Jest to interfejs oparty na strukturze drzewiastej dokumentu.
I Nie ma jednak typowego interfejsu jak w przypadku XML::DOM.
I Dostęp do węzłów odbywa się za pomocą zwykłych
zagnieżdżonych struktur danych, czyli anonimowych tablic i haszów.
I XML::Simple nie radzi sobie z mieszaną treścią, tzn. gdy element zawiera tekst w którym pojawiają się inne elementy. Np. <element> To jest <b>przykład</b> </element> zwraca dziwne wyniki.
XML::Simple
I XML::Simple został stworzony z myślą o plikach konfiguracyjnych zapisanych w XML.
I Moduł ten może służyć do prostych zadań związanych z przetwarzaniem XML.
I Jest to interfejs oparty na strukturze drzewiastej dokumentu.
I Nie ma jednak typowego interfejsu jak w przypadku XML::DOM.
I Dostęp do węzłów odbywa się za pomocą zwykłych
zagnieżdżonych struktur danych, czyli anonimowych tablic i haszów.
I XML::Simple nie radzi sobie z mieszaną treścią, tzn. gdy element zawiera tekst w którym pojawiają się inne elementy. Np. <element> To jest <b>przykład</b> </element> zwraca dziwne wyniki.
XML::Simple
I XML::Simple został stworzony z myślą o plikach konfiguracyjnych zapisanych w XML.
I Moduł ten może służyć do prostych zadań związanych z przetwarzaniem XML.
I Jest to interfejs oparty na strukturze drzewiastej dokumentu.
I Nie ma jednak typowego interfejsu jak w przypadku XML::DOM.
I Dostęp do węzłów odbywa się za pomocą zwykłych
zagnieżdżonych struktur danych, czyli anonimowych tablic i haszów.
I XML::Simple nie radzi sobie z mieszaną treścią, tzn. gdy element zawiera tekst w którym pojawiają się inne elementy. Np. <element> To jest <b>przykład</b> </element> zwraca dziwne wyniki.
XML::Simple
I XML::Simple został stworzony z myślą o plikach konfiguracyjnych zapisanych w XML.
I Moduł ten może służyć do prostych zadań związanych z przetwarzaniem XML.
I Jest to interfejs oparty na strukturze drzewiastej dokumentu.
I Nie ma jednak typowego interfejsu jak w przypadku XML::DOM.
I Dostęp do węzłów odbywa się za pomocą zwykłych
zagnieżdżonych struktur danych, czyli anonimowych tablic i haszów.
I XML::Simple nie radzi sobie z mieszaną treścią, tzn. gdy element zawiera tekst w którym pojawiają się inne elementy. Np. <element> To jest <b>przykład</b> </element> zwraca dziwne wyniki.
XML::Simple
I XML::Simple został stworzony z myślą o plikach konfiguracyjnych zapisanych w XML.
I Moduł ten może służyć do prostych zadań związanych z przetwarzaniem XML.
I Jest to interfejs oparty na strukturze drzewiastej dokumentu.
I Nie ma jednak typowego interfejsu jak w przypadku XML::DOM.
I Dostęp do węzłów odbywa się za pomocą zwykłych
zagnieżdżonych struktur danych, czyli anonimowych tablic i haszów.
I XML::Simple nie radzi sobie z mieszaną treścią, tzn. gdy element zawiera tekst w którym pojawiają się inne elementy.
Np. <element> To jest <b>przykład</b> </element>
zwraca dziwne wyniki.
Moduł XML::Simple
1 use XML :: S i m p l e ;
my $ x m l = new XML :: S i m p l e ( F o r c e A r r a y = > 1);
my $ d a t a = $xml - > X M L i n (" l e k s y k o n . xml ");
5
f o r e a c h my $ w p i s ( @ { $data - >{ w p i s }}) {
my $ f o r m y = $wpis - >{ f o r m y } - >[0] - >{ f o r m a };
f o r e a c h my $ f o r m a ( @ $ f o r m y ) { my $f = $forma - >{ c o n t e n t };
10 my $p = $forma - >{ p };
p r i n t " F o r m a : $f - P r z y p a d e k : $p \ n "; }
}
Wczytywanie dokumentów XML za pomocą XML::Simple
1 $VAR1 = {
’ w p i s ’ => [ {
’ i n f o r m a c j e ’=> [ {
’ s e m a n t y k a ’=> [ ’ p r o c e s s ’ ] ,
5 ’ c z e s c m o w y ’=> [ ’ r z e c z o w n i k ’ ] ,
’ r o d z a j ’=> [ ’ m e s k i ’ ] } ] ,
’ f o r m y ’=> [ {
’ f o r m a ’ => [ {
10 ’ l ’=> ’ 1 ’,
’ p ’=> ’ mian ’,
’ c o n t e n t ’ => ’ a n a l i z a ’ } ,
{
15 ’ l ’=> ’ 1 ’,
’ p ’=> ’ dop ’,
’ c o n t e n t ’ => ’ a n a l i z y ’ } ,
{
20 ’ l ’=> ’ 1 ’,
’ p ’=> ’ c e l ’,
’ c o n t e n t ’ => ’ a n a l i z i e ’ } ]
} ] ,
25 ’ l e m a t ’=> [ ’ a n a l i z a ’ ] ,
’ n r ’=> ’ 1 ’ } ]
} ;
Tworzenie dokumentów XML za pomocą XML::Simple
1 use XML :: S i m p l e ; use D a t a :: D u m p e r ;
my $ x m l = new XML :: S i m p l e ( F o r c e A r r a y = > 1);
5 my $ d a t a = $xml - > X M L i n (" l e k s y k o n . xml ");
p r i n t D u m p e r ( $ d a t a );
p r i n t $xml - > X M L o u t ( $ d a t a );
Kontrolowanie działania modułu XML::Simple
1 use XML :: S i m p l e ;
my $ x m l = new XML :: S i m p l e ( F o r c e A r r a y = > [ " w p i s " ] ,
5 G r o u p T a g s = > { " f o r m y " = > " f o r m a " } , );
my $ d a t a = $xml - > X M L i n (" lex . xml ");
10 f o r e a c h my $ w p i s ( @ { $data - >{ w p i s }}) { f o r e a c h my $ f o r m a ( @ { $wpis - >{ f o r m y }}) {
my $f = $forma - >{ c o n t e n t };
my $p = $forma - >{ p };
p r i n t " F o r m a : $f - P r z y p a d e k : $p \ n ";
15 }
}
Wczytywanie dokumentów XML za pomocą XML::Simple
1 $VAR1 = {
’ w p i s ’ => [ {
’ i n f o r m a c j e ’=> {
’ s e m a n t y k a ’=> ’ p r o c e s s ’,
5 ’ c z e s c m o w y ’=> ’ r z e c z o w n i k ’,
’ r o d z a j ’=> ’ m e s k i ’ } ,
’ f o r m y ’=> [ {
’ l ’ => ’ 1 ’,
10 ’ p ’ => ’ mian ’,
’ c o n t e n t ’ => ’ a n a l i z a ’ } ,
{
’ l ’ => ’ 1 ’,
15 ’ p ’ => ’ dop ’,
’ c o n t e n t ’ => ’ a n a l i z y ’ } ,
{
’ l ’ => ’ 1 ’,
20 ’ p ’ => ’ c e l ’,
’ c o n t e n t ’ => ’ a n a l i z i e ’ } ] ,
’ l e m a t ’=> ’ a n a l i z a ’,
Inne przydatne moduły do przetwarzanie XML
XML::Twig
I XML::Twig jest jakby hybrydą parsera opartego na drzewach oraz parsera opartego na strumieniach zdarzeń.
I Pozwala na tworzenie struktur drzewiastych, ale może być ograniczony do określonych podelementów.
I W ten sposób umożliwia wczytywanie dużych dokumentów, dla których są tworzona gałęzie (twigs) a nie całe drzewa.
XML::Dumper
I Moduł podobny do Data::Dumper oraz XML::Simple
I Tworzy XML-ową reprezentację struktur danych w Perlu.
I Konstrukcje nie zawsze czytelne (np. struktury cykliczne)
I Potrafi odtworzyć oryginalną strukturę danych z pliku XML-owego.
Inne przydatne moduły do przetwarzanie XML
XML::Twig
I XML::Twig jest jakby hybrydą parsera opartego na drzewach oraz parsera opartego na strumieniach zdarzeń.
I Pozwala na tworzenie struktur drzewiastych, ale może być ograniczony do określonych podelementów.
I W ten sposób umożliwia wczytywanie dużych dokumentów, dla których są tworzona gałęzie (twigs) a nie całe drzewa.
XML::Dumper
I Moduł podobny do Data::Dumper oraz XML::Simple
I Tworzy XML-ową reprezentację struktur danych w Perlu.
I Konstrukcje nie zawsze czytelne (np. struktury cykliczne)
I Potrafi odtworzyć oryginalną strukturę danych z pliku XML-owego.
Inne przydatne moduły do przetwarzanie XML
XML::Twig
I XML::Twig jest jakby hybrydą parsera opartego na drzewach oraz parsera opartego na strumieniach zdarzeń.
I Pozwala na tworzenie struktur drzewiastych, ale może być ograniczony do określonych podelementów.
I W ten sposób umożliwia wczytywanie dużych dokumentów, dla których są tworzona gałęzie (twigs) a nie całe drzewa.
XML::Dumper
I Moduł podobny do Data::Dumper oraz XML::Simple
I Tworzy XML-ową reprezentację struktur danych w Perlu.
I Konstrukcje nie zawsze czytelne (np. struktury cykliczne)
I Potrafi odtworzyć oryginalną strukturę danych z pliku XML-owego.
Inne przydatne moduły do przetwarzanie XML
XML::Twig
I XML::Twig jest jakby hybrydą parsera opartego na drzewach oraz parsera opartego na strumieniach zdarzeń.
I Pozwala na tworzenie struktur drzewiastych, ale może być ograniczony do określonych podelementów.
I W ten sposób umożliwia wczytywanie dużych dokumentów, dla których są tworzona gałęzie (twigs) a nie całe drzewa.
XML::Dumper
I Moduł podobny do Data::Dumper oraz XML::Simple
I Tworzy XML-ową reprezentację struktur danych w Perlu.
I Konstrukcje nie zawsze czytelne (np. struktury cykliczne)
I Potrafi odtworzyć oryginalną strukturę danych z pliku XML-owego.
Inne przydatne moduły do przetwarzanie XML
XML::Twig
I XML::Twig jest jakby hybrydą parsera opartego na drzewach oraz parsera opartego na strumieniach zdarzeń.
I Pozwala na tworzenie struktur drzewiastych, ale może być ograniczony do określonych podelementów.
I W ten sposób umożliwia wczytywanie dużych dokumentów, dla których są tworzona gałęzie (twigs) a nie całe drzewa.
XML::Dumper
I Moduł podobny do Data::Dumper oraz XML::Simple
I Tworzy XML-ową reprezentację struktur danych w Perlu.
I Konstrukcje nie zawsze czytelne (np. struktury cykliczne)
I Potrafi odtworzyć oryginalną strukturę danych z pliku XML-owego.
Inne przydatne moduły do przetwarzanie XML
XML::Twig
I XML::Twig jest jakby hybrydą parsera opartego na drzewach oraz parsera opartego na strumieniach zdarzeń.
I Pozwala na tworzenie struktur drzewiastych, ale może być ograniczony do określonych podelementów.
I W ten sposób umożliwia wczytywanie dużych dokumentów, dla których są tworzona gałęzie (twigs) a nie całe drzewa.
XML::Dumper
I Moduł podobny do Data::Dumper oraz XML::Simple
I Tworzy XML-ową reprezentację struktur danych w Perlu.
I Potrafi odtworzyć oryginalną strukturę danych z pliku XML-owego.
Inne przydatne moduły do przetwarzanie XML
XML::Twig
I XML::Twig jest jakby hybrydą parsera opartego na drzewach oraz parsera opartego na strumieniach zdarzeń.
I Pozwala na tworzenie struktur drzewiastych, ale może być ograniczony do określonych podelementów.
I W ten sposób umożliwia wczytywanie dużych dokumentów, dla których są tworzona gałęzie (twigs) a nie całe drzewa.
XML::Dumper
I Moduł podobny do Data::Dumper oraz XML::Simple
I Tworzy XML-ową reprezentację struktur danych w Perlu.
I Konstrukcje nie zawsze czytelne (np. struktury cykliczne)
I Potrafi odtworzyć oryginalną strukturę danych z pliku XML-owego.