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.
- Musisz zakodować, aby dodać nowy atrybut (BigData) do istniejącego znacznika XML
- 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:
- SQL
- Python
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”