Python Αρχείο XML – Πώς να διαβάζετε, να γράφετε και να αναλύετε
Τι είναι το XML;
Το XML σημαίνει επεκτάσιμη γλώσσα σήμανσης. Σχεδιάστηκε για να αποθηκεύει και να μεταφέρει μικρές έως μεσαίες ποσότητες δεδομένων και χρησιμοποιείται ευρέως για την κοινή χρήση δομημένων πληροφοριών.
Python σας δίνει τη δυνατότητα να αναλύετε και να τροποποιείτε έγγραφα XML. Για να αναλύσετε ένα έγγραφο XML, πρέπει να έχετε στη μνήμη ολόκληρο το έγγραφο XML. Σε αυτό το σεμινάριο, θα δούμε πώς μπορούμε να χρησιμοποιήσουμε την κλάση minidom XML Python για να φορτώσετε και να αναλύσετε αρχεία XML.
Πώς να αναλύσετε το XML χρησιμοποιώντας το minidom
Έχουμε δημιουργήσει ένα δείγμα αρχείου XML που πρόκειται να αναλύσουμε.
Βήμα 1) Δημιουργήστε δείγμα αρχείου XML
Μέσα στο αρχείο, μπορούμε να δούμε το όνομα, το επώνυμο, το σπίτι και την περιοχή εξειδίκευσης (SQL, Python, Δοκιμές και Επιχειρήσεις)
Βήμα 2) Χρησιμοποιήστε τη συνάρτηση ανάλυσης για να φορτώσετε και να αναλύσετε το αρχείο XML
Αφού αναλύσουμε το έγγραφο, θα το εκτυπώσουμε "όνομα κόμβου" της ρίζας του εγγράφου και του «όνομα πρώτου παιδιού». Το όνομα ετικέτας και το όνομα κόμβου είναι οι τυπικές ιδιότητες του αρχείου XML.
- Εισαγάγετε τη λειτουργική μονάδα xml.dom.minidom και δηλώστε το αρχείο που πρέπει να αναλυθεί (myxml.xml)
- Αυτό το αρχείο περιέχει ορισμένες βασικές πληροφορίες σχετικά με έναν υπάλληλο, όπως όνομα, επώνυμο, σπίτι, εμπειρία κ.λπ.
- Χρησιμοποιούμε τη συνάρτηση ανάλυσης στο minidom XML για να φορτώσουμε και να αναλύσουμε το αρχείο XML
- Έχουμε μεταβλητή doc και το doc παίρνει το αποτέλεσμα της συνάρτησης ανάλυσης
- Θέλουμε να εκτυπώσουμε το όνομα κόμβου και το θυγατρικό όνομα ετικέτας από το αρχείο, οπότε το δηλώνουμε στη λειτουργία εκτύπωσης
- Εκτελέστε τον κώδικα- Εκτυπώνει το όνομα κόμβου (#document) από το αρχείο XML και το πρώτο θυγατρικό όνομα ετικέτας (υπάλληλος) από το αρχείο XML
Σημείωση:
Το όνομα κόμβου και το θυγατρικό όνομα ετικέτας είναι τα τυπικά ονόματα ή ιδιότητες ενός χώρου XML.
Βήμα 3) Καλέστε τη λίστα ετικετών XML από το έγγραφο XML και εκτυπώστε
Στη συνέχεια, μπορούμε επίσης να καλέσουμε τη λίστα των ετικετών XML από το έγγραφο XML και να την εκτυπώσουμε. Εδώ εκτυπώσαμε το σύνολο δεξιοτήτων όπως η SQL, Python, Δοκιμές και Επιχειρήσεις.
- Δηλώστε τη μεταβλητή τεχνογνωσία, από την οποία θα εξαγάγουμε όλη την ονομασία εμπειρογνωμοσύνης που έχει ο υπάλληλος
- Χρησιμοποιήστε την τυπική συνάρτηση dom που ονομάζεται "getElementsByTagName"
- Αυτό θα πάρει όλα τα στοιχεία που ονομάζονται δεξιότητα
- Δηλώστε βρόχο σε κάθε μία από τις ετικέτες δεξιοτήτων
- Εκτελέστε τον κωδικό - Θα δώσει μια λίστα με τέσσερις δεξιότητες
Πώς να γράψετε τον κόμβο XML
Μπορούμε να δημιουργήσουμε ένα νέο χαρακτηριστικό χρησιμοποιώντας τη συνάρτηση «createElement» και στη συνέχεια να προσθέσουμε αυτό το νέο χαρακτηριστικό ή ετικέτα στις υπάρχουσες ετικέτες XML. Προσθέσαμε μια νέα ετικέτα "BigData" στο αρχείο XML μας.
- Πρέπει να κωδικοποιήσετε για να προσθέσετε το νέο χαρακτηριστικό (BigData) στην υπάρχουσα ετικέτα XML
- Στη συνέχεια, πρέπει να εκτυπώσετε την ετικέτα XML με νέα χαρακτηριστικά που προσαρτώνται στην υπάρχουσα ετικέτα XML
- Για να προσθέσουμε ένα νέο XML και να το προσθέσουμε στο έγγραφο, χρησιμοποιούμε τον κωδικό "doc.create στοιχεία"
- Αυτός ο κώδικας θα δημιουργήσει μια νέα ετικέτα ικανότητας για το νέο μας χαρακτηριστικό "Big-data"
- Προσθέστε αυτήν την ετικέτα δεξιότητας στο έγγραφο πρώτο παιδί (υπάλληλος)
- Εκτελέστε τον κώδικα - η νέα ετικέτα "big data" θα εμφανιστεί μαζί με την άλλη λίστα ειδικών γνώσεων
Παράδειγμα ανάλυσης 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 = 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
Σύνοψη
Python σας δίνει τη δυνατότητα να αναλύετε ολόκληρο το έγγραφο XML με μία κίνηση και όχι μόνο μία γραμμή τη φορά. Για να αναλύσετε ένα έγγραφο XML πρέπει να έχετε ολόκληρο το έγγραφο στη μνήμη.
- Για ανάλυση εγγράφου XML
- Εισαγωγή xml.dom.minidom
- Χρησιμοποιήστε τη συνάρτηση "ανάλυση" για να αναλύσετε το έγγραφο ( doc=xml.dom.minidom.parse (όνομα αρχείου).
- Καλέστε τη λίστα ετικετών XML από το έγγραφο XML χρησιμοποιώντας κώδικα (=doc.getElementsByTagName( «όνομα ετικετών xml»)
- Για να δημιουργήσετε και να προσθέσετε νέο χαρακτηριστικό σε έγγραφο XML
- Χρησιμοποιήστε τη συνάρτηση "createElement"