Python Plik XML – jak czytać, zapisywać i analizować
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 analizowanie i modyfikowanie dokumentów XML. Aby przeanalizować dokument XML, musisz mieć w pamięci cały dokument XML. W tym samouczku zobaczymy, jak możemy wykorzystać klasę minidom XML 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 plik „nazwa węzła” katalogu głównego dokumentu oraz „zmienna pierwszego dziecka”. 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)
- 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 dokument pobiera wynik funkcji analizy
- Chcemy wydrukować nazwę węzła i zmienną podrzędną z pliku, więc deklarujemy to w funkcji print
- 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 zmienna podrzędna to standardowe nazwy lub właściwości domeny XML.
Krok 3) Wywołaj listę tagów XML z dokumentu XML i wydrukuj
Następnie 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, Testy i biznes.
- Zadeklaruj zmienną wiedzę specjalistyczną, z której wyodrębnimy całą wiedzę specjalistyczną, jaką posiada pracownik
- Użyj standardowej funkcji dom o nazwie „getElementsByTagName”
- Spowoduje to uzyskanie wszystkich elementów o nazwie umiejętności
- Zadeklaruj pętlę nad każdym ze znacznikó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 tagu XML
- Następnie należy 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 items”
- Ten kod utworzy nowy tag umiejętności dla naszego nowego atrybutu „Big-data”
- Dodaj ten znacznik umiejętności do dokumentu pierwsze dziecko (pracownik)
- Uruchom kod – pojawi się nowy tag „big data” z drugą listą specjalizacji
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 interfejs API do manipulowania kodem XML. ElementTree to łatwy 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:
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ę kompletny kod umożliwiający odczyt 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)
wydajność:
Expertise Data: SQL Python
Podsumowanie
Python umożliwia analizę 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
- Zaimportuj 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”)
- Aby utworzyć i dodać nowy atrybut w dokumencie XML
- Użyj funkcji „createElement”




