Python XML Parser Tutorial: Przeczytaj przykład pliku xml (Minidom, ElementTree)

Spisie treści:

Anonim

Co to jest XML?

XML to skrót od eXtensible Markup Language. Został zaprojektowany do przechowywania i przesyłania małych i średnich ilości danych i jest szeroko stosowany do udostępniania ustrukturyzowanych informacji.

Python umożliwia analizowanie i modyfikowanie dokumentu XML. Aby przeanalizować dokument XML, musisz mieć w pamięci cały dokument XML. W tym samouczku zobaczymy, jak możemy użyć klasy XML minidom w Pythonie do ładowania i analizowania pliku XML.

W tym samouczku nauczymy się:

  • Jak analizować XML przy użyciu minidom
  • Jak utworzyć węzeł XML
  • Jak analizować XML za pomocą ElementTree

Jak analizować XML przy użyciu minidom

Stworzyliśmy przykładowy plik XML, który zamierzamy przeanalizować.

Krok 1) W pliku możemy zobaczyć imię, nazwisko, dom i obszar specjalizacji (SQL, Python, Testing and Business)

Krok 2) Po przeanalizowaniu dokumentu wydrukujemy „nazwę węzła” katalogu głównego dokumentu oraz „ zmienną firstchild” . Zmienna i nazwa węzła to standardowe właściwości pliku XML.

  • Zaimportuj moduł xml.dom.minidom i zadeklaruj plik, który ma zostać przeanalizowany (myxml.xml)
  • Ten plik zawiera podstawowe informacje o pracowniku, takie jak imię, nazwisko, dom, doświadczenie itp.
  • Używamy funkcji parsowania w minidomie XML, aby załadować i przeanalizować plik XML
  • Mamy zmienną doc, a doc pobiera wynik funkcji parsowania
  • Chcemy wydrukować nazwę węzła i zmienną potomną z pliku, dlatego deklarujemy to w funkcji drukowania
  • Uruchom kod - wypisuje nazwę węzła (#document) z pliku XML i pierwszą zmienną potomną (pracownik) z pliku XML

Uwaga :

Nazwa węzła i zmienna potomna to standardowe nazwy lub właściwości domeny XML. Na wypadek, gdybyś nie był zaznajomiony z tego typu konwencjami nazewnictwa.

Krok 3) Możemy również wywołać listę tagów XML z dokumentu XML i wydrukować. Tutaj wydrukowaliśmy zestaw umiejętności, takich jak SQL, Python, testowanie i biznes.

  • Zadeklaruj zmienną ekspertyzę, z której wyodrębnimy całą wiedzę fachową posiadaną przez pracownika
  • Użyj standardowej funkcji dom o nazwie „getElementsByTagName”
  • Pozwoli to uzyskać wszystkie elementy o nazwie skill
  • Zadeklaruj pętlę nad każdym z tagów umiejętności
  • Uruchom kod - wyświetli listę czterech umiejętności

Jak utworzyć węzeł XML

Możemy utworzyć nowy atrybut za pomocą funkcji „createElement”, a następnie dołączyć ten nowy atrybut lub tag do istniejących tagów XML. Dodaliśmy nowy tag „BigData” do naszego pliku XML.

  1. Musisz zakodować, aby dodać nowy atrybut (BigData) do istniejącego znacznika XML
  2. Następnie musisz wydrukować znacznik XML z nowymi atrybutami dołączonymi do istniejącego znacznika XML
  • Aby dodać nowy XML i dodać go do dokumentu, używamy kodu „doc.create elements”
  • Ten kod utworzy nowy tag umiejętności dla naszego nowego atrybutu „Big-data”
  • Dodaj ten tag umiejętności do dokumentu pierwszego dziecka (pracownika)
  • Uruchom kod - nowy znacznik „duże zbiory danych” pojawi się wraz z inną listą wiedzy specjalistycznej

Przykład parsera XML

Przykład Pythona 2

import xml.dom.minidomdef main ():# użyj funkcji parse (), aby załadować i przeanalizować plik XMLdoc = xml.dom.minidom.parse ("Myxml.xml");# wydrukuj węzeł dokumentu i nazwę pierwszego tagu podrzędnegodrukuj doc.nodeNamedrukuj doc.firstChild.tagName# pobierz listę znaczników XML z dokumentu i wydrukuj każdy z nichekspertyza = doc.getElementsByTagName ("ekspertyza")drukuj "% d doświadczenie:"% ekspertyza.lengthza umiejętności w zakresie wiedzy specjalistycznej:print skill.getAttribute ("name")# utwórz nowy znacznik XML i dodaj go do dokumentunewexpertise = doc.createElement ("ekspertyza")newexpertise.setAttribute ("nazwa", "BigData")doc.firstChild.appendChild (nowa wiedza)drukuj „”ekspertyza = doc.getElementsByTagName ("ekspertyza")drukuj "% d doświadczenie:"% ekspertyza.lengthza umiejętności w zakresie wiedzy specjalistycznej:print skill.getAttribute ("name")if name == "__main__":Główny();

Przykład Pythona 3

import xml.dom.minidomdef main ():# użyj funkcji parse (), aby załadować i przeanalizować plik XMLdoc = xml.dom.minidom.parse ("Myxml.xml");# wydrukuj węzeł dokumentu i nazwę pierwszego tagu podrzędnegoprint (doc.nodeName)print (doc.firstChild.tagName)# pobierz listę znaczników XML z dokumentu i wydrukuj każdy z nichekspertyza = doc.getElementsByTagName ("ekspertyza")drukuj ("% d doświadczenie:"% ekspertyza.length)za umiejętności w zakresie wiedzy specjalistycznej:print (skill.getAttribute ("nazwa"))# utwórz nowy znacznik XML i dodaj go do dokumentunewexpertise = doc.createElement ("ekspertyza")newexpertise.setAttribute ("nazwa", "BigData")doc.firstChild.appendChild (nowa wiedza)print („”)ekspertyza = doc.getElementsByTagName ("ekspertyza")drukuj ("% d doświadczenie:"% ekspertyza.length)za umiejętności w zakresie wiedzy specjalistycznej:print (skill.getAttribute ("nazwa"))if __name__ == "__main__":Główny();

Jak analizować XML za pomocą ElementTree

ElementTree to interfejs API do manipulowania kodem XML. ElementTree to łatwy sposób na przetwarzanie plików XML.

Jako przykładowe dane używamy następującego dokumentu XML:

SQLPython

Czytanie XML za pomocą ElementTree:

musimy najpierw zaimportować moduł xml.etree.ElementTree.

import xml.etree.ElementTree as ET

Teraz pobierzmy element główny:

root = tree.getroot()

Poniżej znajduje się pełny kod do odczytu powyższych danych XML

import xml.etree.ElementTree as ETtree = ET.parse('items.xml')root = tree.getroot()# all items dataprint('Expertise Data:')for elem in root:for subelem in elem:print(subelem.text)
wynik:
Expertise Data:SQLPython

Podsumowanie:

Python umożliwia analizowanie całego dokumentu XML za jednym razem, a nie tylko jednej linii na raz. Aby przeanalizować dokument XML, musisz mieć cały dokument w pamięci.

  • Aby przeanalizować dokument XML
    • Importuj xml.dom.minidom
    • Użyj funkcji "parse", aby przeanalizować dokument (doc = xml.dom.minidom.parse (nazwa pliku);
    • Wywołaj listę tagów XML z dokumentu XML za pomocą kodu (= doc.getElementsByTagName ("nazwa tagów xml")
  • Tworzenie i dodawanie nowego atrybutu w dokumencie XML
    • Użyj funkcji „createElement”