Python XML ElementTree

Python XML ElementTree
Możemy generować, zmieniać i anulować dokumenty XML za pomocą pomocniczej elementTree Python Library ElementTree. Uważa się, że drzewo reprezentuje cały dokument. W tym drzewie element oznacza pojedynczy węzeł lub gałęzie. W XML czytanie lub pisanie do lub z plików odbywa się przede wszystkim na poziomie ElementTree, podczas gdy interakcja z elementami opiera się na poziomie elementu. Moduł Python ElementTree zostanie użyty do edytowania i dodawania danych do plików XML, gdy uczymy się parsować XML z Pythonem w tym samouczku. Będziemy również zbadać wyrażenia XPath i drzewa XML w celu zrozumienia danych.

Framework XML wykorzystuje go do dynamicznego zrozumienia danych. Dotyczy w dużej mierze budowania stron internetowych z danymi, które są zgodne z wcześniej określonym formatem. XML, zwany również dokumentem XML, służy do generowania strony. Prosta, hierarchiczna struktura przypominająca drzewo jest wytwarzana za pomocą XML. Głównym celem tego postu jest pokazanie, jak czytać i rozumieć pliki za pomocą Pythona.

Przykładowe dane dla tej części zostaną pobrane z następującego dokumentu XML:

Z tego, co przeczytałeś w pliku XML, widać, że główny element nazywa się „Klient”, który zawiera wszystkie inne elementy, takie jak „klienci”, które są uważane za „elementy dziecięce” lub „podelementy”.„Należy zauważyć, że te elementy dziecięce mają zdolność do rodzenia innych elementów dziecięcych, które są znane jako„ elementy sub-dziecko ”i działać jako własni rodzice.

Zauważysz na przykład, że element klienta zawiera kilka „atrybutów”, takich jak identyfikatory, nazwy i rachunki, które zawierają jeszcze więcej szczegółów. Teraz przeczytamy te informacje o pliku XML za pomocą różnych kodów podanych poniżej.

Przykład 1:
Możemy uzyskać nazwę znacznika głównego z określonego pliku XML w Pythonie, wykorzystując funkcję getroot z modułu elementTree.

Importuj XML.Etree.ElementTree jako ET
file_root = Et.Parse („Klient.xml ').getroot ()
file_tag = file_root.etykietka
print (file_tag)

Uwzględniliśmy element modułu, który przypisano alias jako ET. Następnie zadeklarowaliśmy obiekt jako file_root. Wewnątrz tego obiektu mamy funkcję Parse, która przyjmuje nazwę pliku XML. Jednocześnie nazwaliśmy metodę getroot, aby uzyskać nazwę korzenia. Utworzyliśmy inny obiekt jako plik_tag, w którym nazywaliśmy znacznik z obiektem pliku_root. Wynik pliku_tag zostanie wydrukowany na ekranie.

Możesz zobaczyć nazwę generowanego znacznika głównego, to klienci podane w pliku XML.

Przykład 2:
Możemy również uzyskać źródło atrybutów, które istniały w pliku XML. W tym przykładzie możemy osiągnąć korzeń atrybutu.

Importuj XML.Etree.ElementTree jako ET
f_root = Et.Parse („Klient.xml ').getroot ()
f_attributes = f_root.Atryb
druk (f_attributes)
dzień = f_attributes.Get („Day”)
Drukuj („dzień:”, dzień)

Gdy wstawiliśmy moduł modułu ElementTree, utworzyliśmy obiekt jako F_ROOT, w którym zdefiniowaliśmy plik XML w metodzie Parse. Zdefiniowaliśmy również metodę getroot w tym obiekcie, aby uzyskać nazwę główną. Następnie utworzyliśmy obiekt jako f_attributes dla korzenia atrybutu i wydrukowaliśmy jego wartość. Aby uzyskać konkretny atrybut, zdefiniowaliśmy obiekt jako dzień i przypisaliśmy atrybut do metody GET wewnątrz. Konkretny atrybut zostanie wydrukowany przez funkcję drukowania.

Wyniki powyższego kodu są następujące:

Przykład 3:
Możemy uzyskać dostęp do atrybutów węzłów dziecięcych korzenia, wdrażając następujący kod.

Importuj XML.Etree.ElementTree jako ET
root = Et.Parse („Klient.xml ').getroot ()
dla klienta w root.FINDALL („Klient”):
atrybuty = klient.Atryb
Drukuj (atrybuty)
type = atrybuty.Get („Typ”)

Pierwsze dwuetapowe kodu jest takie same jak wyżej określony kod. Następnie mamy pętlę, która podsumowuje każdy węzeł dziecięcy „klient”. Po iteracji stworzyliśmy atrybut zmienny, który otrzymuje wszystkie węzły atrybutów. Przypisaliśmy typ atrybutów, przypisując „Typ” wewnątrz metody GET.

Rodzaje atrybutów w węzłach dziecięcych są wyświetlane w następujący sposób:

Przykład 4:
Przykładem jest dostęp do węzła elementu z pliku XML bez znajomości nazwy znacznika w stosunku do odpowiedniego elementu węzła.

Importuj XML.Etree.ElementTree jako ET
root = Et.Parse („Klient.xml ').getroot ()
dla klienta w root.FINDALL („Klient”):
ID = Klient.Znajdź („id”).tekst
print („id:”, id)
Nazwa = klient.Znajdź („Nazwa”).tekst
print („Nazwa:”, nazwa)
Bill = klient.Znajdź („Bill”).tekst
Drukuj („Bill:”, rachunek)

Zacznij od pętli dla dla pętli dla każdego węzła w pliku XML. Następnie otrzymujemy identyfikator elementu, nazwę i rachunek, przekazując je do metody znalezienia i drukując każdy element jej wartością.

Węzły elementu uzyskane z powyższego kodu są następujące:

Przykład 5:
Zobaczmy ostatni przykład, w którym uzyskujemy dostęp do nazwy znacznika głównego z pliku XML klienta.

Importuj XML.Etree.ElementTree jako ET
root = Et.Parse („Klient.xml ').getroot ()
dla klienta w root.FINDALL („Klient”):
dla przedmiotów w kliencie:
i_name = elementy.etykietka
I_Value = Klient.Znajdź (przedmioty.etykietka).tekst
print (i_name, „:”, i_value)

Z pętli For First iterowaliśmy nad każdym z węzłów. Następnie ponownie użyliśmy pętli, aby uzyskać wszystkie elementy węzła klienta. Do elementów są dostępne, wywołując obiekt tagu i przekazując go do metody znalezienia.

Cały znacznik elementu z znacznika klienta jest wyświetlany w następujący sposób:

Wniosek

Niezbędny pakiet Python o nazwie ElementTree umożliwia przejście i czytanie dokumentów XML. Dokument XML jest podzielony na możliwą do zarządzania strukturę drzewa za pomocą ElementTree. W razie wątpliwości wydrukuj go przy użyciu przydatnego wydruku komendy drukowania (it.ToString (root, koding = "utf8").dekoduj („UTF8”)), aby zbadać cały dokument XML jednocześnie. Podczas modyfikowania, dodawania lub eliminowania z XML sprawdzanie jest pomocne. Zastosowanie ElementTree i XMLS ma kilka ważnych rozważań. Znaczniki określają, jakie wartości należy nakreślić w strukturze drzewa i pomóc je zbudować. Możliwość czytania i pisania do XML może być ułatwiona przez sprytną strukturę. Związek rodzic-dziecko musi być zawsze wyświetlany w nawiasach otwierających i zamykających na tagach. Podczas sprawdzania poprawności znaczników lub umożliwienia określenia boolean atrybuty zawierają dalsze instrukcje.