Python Αρχείο XML – Πώς να διαβάζετε, να γράφετε και να αναλύετε
⚡ Έξυπνη Σύνοψη
Python Η επεξεργασία XML σάς επιτρέπει να διαβάζετε, να γράφετε και να αναλύετε έγγραφα XML χρησιμοποιώντας τις ενσωματωμένες ενότητες minidom και ElementTree. Η κλάση minidom φορτώνει ένα αρχείο στη μνήμη ως DOM, ενώ το ElementTree προσφέρει μια ταχύτερη, πιο... PythonAPI δέντρου ic.
Οι παρακάτω ενότητες καλύπτουν την ανάλυση, τη σύνταξη και την ανάγνωση αρχείων XML σε Python.
Τι είναι το XML;
Το XML σημαίνει επεκτάσιμη γλώσσα σήμανσης. Σχεδιάστηκε για να αποθηκεύει και να μεταφέρει μικρές έως μεσαίες ποσότητες δεδομένων και χρησιμοποιείται ευρέως για την κοινή χρήση δομημένων πληροφοριών.
Python σας επιτρέπει να αναλύετε και να τροποποιείτε έγγραφα XML. Για να αναλύσετε ένα έγγραφο XML, πρέπει να έχετε ολόκληρο το έγγραφο XML στη μνήμη. Σε αυτό το σεμινάριο, θα δούμε πώς μπορούμε να χρησιμοποιήσουμε την κλάση XML minidom στο Python για να φορτώσετε και να αναλύσετε αρχεία XML.
Πώς να αναλύσετε το XML χρησιμοποιώντας το minidom
Έχουμε δημιουργήσει ένα δείγμα αρχείου XML που πρόκειται να αναλύσουμε.
Βήμα 1) Δημιουργήστε δείγμα αρχείου XML
Μέσα στο αρχείο, μπορούμε να δούμε το όνομα, το επώνυμο, το σπίτι και την περιοχή εξειδίκευσης (SQL, Python, Δοκιμές και Επιχειρήσεις).
Βήμα 2) Χρησιμοποιήστε τη συνάρτηση ανάλυσης για να φορτώσετε και να αναλύσετε το αρχείο XML
Μόλις αναλύσουμε το έγγραφο, θα εκτυπώσουμε το "όνομα κόμβου" της ρίζας του εγγράφου και το "όνομα ετικέτας πρώτου παιδιού". Το όνομα ετικέτας και το όνομα κόμβου είναι οι τυπικές ιδιότητες του αρχείου XML.
- Εισαγάγετε την ενότητα xml.dom.minidom και δηλώστε το αρχείο που πρέπει να αναλυθεί (myxml.xml)
- Αυτό το αρχείο περιέχει ορισμένες βασικές πληροφορίες σχετικά με έναν υπάλληλο, όπως όνομα, επώνυμο, σπίτι, εμπειρία κ.λπ.
- Χρησιμοποιούμε τη συνάρτηση ανάλυσης στο minidom XML για να φορτώσουμε και να αναλύσουμε το αρχείο XML
- Έχουμε μια μεταβλητή doc, και η doc λαμβάνει το αποτέλεσμα της συνάρτησης parse.
- Θέλουμε να εκτυπώσουμε το nodename και το child tagname από το αρχείο, γι' αυτό το δηλώνουμε στη συνάρτηση print.
- Εκτελέστε τον κώδικα- Εκτυπώνει το όνομα κόμβου (#document) από το αρχείο XML και το πρώτο θυγατρικό όνομα ετικέτας (υπάλληλος) από το αρχείο XML
ΣημείωσηΤα nodename και child tagname είναι τα τυπικά ονόματα ή ιδιότητες ενός XML dom.
Βήμα 3) Καλέστε τη λίστα ετικετών XML από το έγγραφο XML και εκτυπώστε την
Στη συνέχεια, μπορούμε επίσης να καλέσουμε τη λίστα ετικετών XML από το έγγραφο XML και να την εκτυπώσουμε. Εδώ εκτυπώσαμε το σύνολο δεξιοτήτων όπως SQL, Python, Δοκιμές και Επιχειρήσεις.
- Δηλώστε τη μεταβλητή εμπειρογνωμοσύνη, από την οποία θα εξάγουμεtracόλα τα ονόματα εμπειρογνωμοσύνης που έχει ο εργαζόμενος
- Χρησιμοποιήστε την τυπική συνάρτηση dom που ονομάζεται "getElementsByTagName"
- Αυτό θα πάρει όλα τα στοιχεία που ονομάζονται δεξιότητα
- Δηλώστε έναν βρόχο πάνω από κάθε μία από τις ετικέτες δεξιοτήτων
- Εκτελέστε τον κώδικα - Θα σας δώσει μια λίστα με τέσσερις δεξιότητες
Πώς να γράψετε τον κόμβο XML
Μπορούμε να δημιουργήσουμε ένα νέο χαρακτηριστικό χρησιμοποιώντας τη συνάρτηση «createElement» και στη συνέχεια να προσθέσουμε αυτό το νέο χαρακτηριστικό ή ετικέτα στις υπάρχουσες ετικέτες XML. Προσθέσαμε μια νέα ετικέτα "BigData" στο αρχείο XML μας.
- Πρέπει να γράψετε κώδικα για να προσθέσετε το νέο χαρακτηριστικό (BigData) στην υπάρχουσα ετικέτα XML
- Στη συνέχεια, πρέπει να εκτυπώσετε την ετικέτα XML με το νέο χαρακτηριστικό προσαρτημένο στην υπάρχουσα ετικέτα XML.
- Για να προσθέσουμε μια νέα ετικέτα XML και να την προσθέσουμε στο έγγραφο, χρησιμοποιούμε τον κώδικα "doc.createElement"
- Αυτός ο κώδικας θα δημιουργήσει μια νέα ετικέτα δεξιότητας για το νέο μας χαρακτηριστικό "BigData"
- Προσθέστε αυτήν την ετικέτα δεξιότητας στο πρώτο θυγατρικό στοιχείο του εγγράφου (υπάλληλος)
- Εκτελέστε τον κώδικα - η νέα ετικέτα "BigData" θα εμφανιστεί μαζί με την άλλη λίστα εμπειρογνωμοσύνης
Παράδειγμα ανάλυσης XML
Python 2 Παράδειγμα
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 Παράδειγμα
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();
Πώς να αναλύσετε το XML χρησιμοποιώντας το ElementTree
Το ElementTree είναι ένα API για τον χειρισμό XML. Το ElementTree είναι ένας εύκολος τρόπος επεξεργασίας αρχείων XML.
Ως δείγμα δεδομένων χρησιμοποιούμε το ακόλουθο έγγραφο XML:
<data> <items> <item name="expertise1">SQL</item> <item name="expertise2">Python</item> </items> </data>
Ανάγνωση XML χρησιμοποιώντας το ElementTree:
Πρέπει πρώτα να εισαγάγουμε τη λειτουργική μονάδα xml.etree.ElementTree.
import xml.etree.ElementTree as ET
Τώρα ας φέρουμε το στοιχείο root:
root = tree.getroot()
Ακολουθεί ο πλήρης κώδικας για την ανάγνωση των παραπάνω δεδομένων 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)
Παραγωγή:
Expertise Data: SQL Python





