Python Plik XML – jak czytać, zapisywać i analizować
⚡ Inteligentne podsumowanie
Python Przetwarzanie XML pozwala odczytywać, zapisywać i analizować dokumenty XML za pomocą wbudowanych modułów minidom i ElementTree. Klasa minidom ładuje plik do pamięci jako DOM, podczas gdy ElementTree oferuje szybsze i bardziej… PythonAPI drzewa ic.

Poniższe sekcje obejmują analizę składniową, zapisywanie i odczytywanie plików XML w Python.
Co to jest XML?
XML oznacza eXtensible Markup Language. Został zaprojektowany do przechowywania i transportu małych i średnich ilości danych i jest szeroko stosowany do udostępniania informacji strukturalnych.
Python Umożliwia parsowanie i modyfikowanie dokumentów XML. Aby sparsować dokument XML, musisz mieć cały dokument XML w pamięci. W tym samouczku zobaczymy, jak wykorzystać klasę XML minidom w… Python do ładowania i analizowania plików XML.
Jak analizować XML za pomocą minidom
Stworzyliśmy przykładowy plik XML, który będziemy analizować.
Krok 1) Utwórz przykładowy plik XML
Wewnątrz pliku możemy zobaczyć imię, nazwisko, adres zamieszkania i specjalizację (SQL, Python(Testowanie i Biznes).
Krok 2) Użyj funkcji parse, aby załadować i przeanalizować plik XML
Po przeanalizowaniu dokumentu wydrukujemy „nazwę węzła” głównego dokumentu oraz „nazwę znacznika firstchild”. Nazwa znacznika 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)
- Plik ten zawiera podstawowe informacje o pracowniku, takie jak imię, nazwisko, adres zamieszkania, wiedza specjalistyczna itp.
- Używamy funkcji parse w minidomie XML do ładowania i analizowania pliku XML
- Mamy zmienną doc, a doc pobiera wynik funkcji parsowania
- Chcemy wydrukować nazwę węzła i nazwę podrzędnego znacznika z pliku, więc deklarujemy je w funkcji drukowania
- Uruchom kod — wypisuje nazwę węzła (#document) z pliku XML i pierwszą zmienną podrzędną (pracownik) z pliku XML
Note:Nazwa węzła i nazwa znacznika podrzędnego to standardowe nazwy lub właściwości domeny XML.
Krok 3) Wywołaj listę tagów XML z dokumentu XML i wydrukuj ją
Następnie możemy również wywołać listę tagów XML z dokumentu XML i ją wydrukować. W tym przypadku wydrukowaliśmy zestaw umiejętności, takich jak SQL, Python, Testy i biznes.
- Zadeklaruj zmienną wiedzę specjalistyczną, z której będziemy korzystaćtracwszystkie nazwy kompetencji, które posiada pracownik
- Użyj standardowej funkcji dom o nazwie „getElementsByTagName”
- Spowoduje to uzyskanie wszystkich elementów o nazwie umiejętności
- Zadeklaruj pętlę dla każdego z tagów umiejętności
- Uruchom kod. Wyświetli listę czterech umiejętności
Jak napisać 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” w naszym pliku XML.
- Musisz napisać kod, aby dodać nowy atrybut (BigData) do istniejącego znacznika XML
- Następnie należy wydrukować znacznik XML z nowym atrybutem dodanym do istniejącego znacznika XML
- Aby dodać nowy znacznik XML i dodać go do dokumentu, używamy kodu „doc.createElement”
- Ten kod utworzy nowy tag umiejętności dla naszego nowego atrybutu „BigData”
- Dodaj ten tag umiejętności do pierwszego elementu podrzędnego dokumentu (pracownik)
- Uruchom kod – nowy tag „BigData” pojawi się wraz z inną listą kompetencji
Przykład analizatora XML
Python 2 Przykład
import xml.dom.minidom def main(): # use the parse() function to load and parse an XML file doc = xml.dom.minidom.parse("Myxml.xml"); # print out the document node and the name of the first child tag print doc.nodeName print doc.firstChild.tagName # get a list of XML tags from the document and print each one expertise = doc.getElementsByTagName("expertise") print "%d expertise:" % expertise.length for skill in expertise: print skill.getAttribute("name") #Write a new XML tag and add it into the document newexpertise = doc.createElement("expertise") newexpertise.setAttribute("name", "BigData") doc.firstChild.appendChild(newexpertise) print " " expertise = doc.getElementsByTagName("expertise") print "%d expertise:" % expertise.length for skill in expertise: print skill.getAttribute("name") if name == "__main__": main();
Python 3 Przykład
import xml.dom.minidom def main(): # use the parse() function to load and parse an XML file doc = xml.dom.minidom.parse("Myxml.xml"); # print out the document node and the name of the first child tag print (doc.nodeName) print (doc.firstChild.tagName) # get a list of XML tags from the document and print each one expertise = doc.getElementsByTagName("expertise") print ("%d expertise:" % expertise.length) for skill in expertise: print (skill.getAttribute("name")) # Write a new XML tag and add it into the document newexpertise = doc.createElement("expertise") newexpertise.setAttribute("name", "BigData") doc.firstChild.appendChild(newexpertise) print (" ") expertise = doc.getElementsByTagName("expertise") print ("%d expertise:" % expertise.length) for skill in expertise: print (skill.getAttribute("name")) if __name__ == "__main__": main();
Jak analizować XML za pomocą ElementTree
ElementTree to API do manipulowania plikami XML. ElementTree to prosty sposób na przetwarzanie plików XML.
Jako przykładowe dane wykorzystujemy następujący dokument XML:
<data> <items> <item name="expertise1">SQL</item> <item name="expertise2">Python</item> </items> </data>
Czytanie XML za pomocą ElementTree:
Najpierw musimy zaimportować moduł xml.etree.ElementTree.
import xml.etree.ElementTree as ET
Teraz pobierzmy element główny:
root = tree.getroot()
Poniżej znajduje się kompletny kod umożliwiający odczytanie powyższych danych XML:
import xml.etree.ElementTree as ET tree = ET.parse('items.xml') root = tree.getroot() # all items data print('Expertise Data:') for elem in root: for subelem in elem: print(subelem.text)
Wyjście:
Expertise Data: SQL Python




