Python Αρχείο XML – Πώς να διαβάζετε, να γράφετε και να αναλύετε

Τι είναι το XML;

Το XML σημαίνει επεκτάσιμη γλώσσα σήμανσης. Σχεδιάστηκε για να αποθηκεύει και να μεταφέρει μικρές έως μεσαίες ποσότητες δεδομένων και χρησιμοποιείται ευρέως για την κοινή χρήση δομημένων πληροφοριών.

Python σας δίνει τη δυνατότητα να αναλύετε και να τροποποιείτε έγγραφα XML. Για να αναλύσετε ένα έγγραφο XML, πρέπει να έχετε στη μνήμη ολόκληρο το έγγραφο XML. Σε αυτό το σεμινάριο, θα δούμε πώς μπορούμε να χρησιμοποιήσουμε την κλάση minidom XML Python για να φορτώσετε και να αναλύσετε αρχεία XML.

Πώς να αναλύσετε το XML χρησιμοποιώντας το minidom

Έχουμε δημιουργήσει ένα δείγμα αρχείου XML που πρόκειται να αναλύσουμε.

Βήμα 1) Δημιουργήστε δείγμα αρχείου XML

Μέσα στο αρχείο, μπορούμε να δούμε το όνομα, το επώνυμο, το σπίτι και την περιοχή εξειδίκευσης (SQL, Python, Δοκιμές και Επιχειρήσεις)

Πώς να αναλύσετε το XML χρησιμοποιώντας το minidom

Βήμα 2) Χρησιμοποιήστε τη συνάρτηση ανάλυσης για να φορτώσετε και να αναλύσετε το αρχείο XML

Αφού αναλύσουμε το έγγραφο, θα το εκτυπώσουμε "όνομα κόμβου" της ρίζας του εγγράφου και του «όνομα πρώτου παιδιού». Το όνομα ετικέτας και το όνομα κόμβου είναι οι τυπικές ιδιότητες του αρχείου XML.

Ανάλυση XML χρησιμοποιώντας minidom

  • Εισαγάγετε τη λειτουργική μονάδα xml.dom.minidom και δηλώστε το αρχείο που πρέπει να αναλυθεί (myxml.xml)
  • Αυτό το αρχείο περιέχει ορισμένες βασικές πληροφορίες σχετικά με έναν υπάλληλο, όπως όνομα, επώνυμο, σπίτι, εμπειρία κ.λπ.
  • Χρησιμοποιούμε τη συνάρτηση ανάλυσης στο minidom XML για να φορτώσουμε και να αναλύσουμε το αρχείο XML
  • Έχουμε μεταβλητή doc και το doc παίρνει το αποτέλεσμα της συνάρτησης ανάλυσης
  • Θέλουμε να εκτυπώσουμε το όνομα κόμβου και το θυγατρικό όνομα ετικέτας από το αρχείο, οπότε το δηλώνουμε στη λειτουργία εκτύπωσης
  • Εκτελέστε τον κώδικα- Εκτυπώνει το όνομα κόμβου (#document) από το αρχείο XML και το πρώτο θυγατρικό όνομα ετικέτας (υπάλληλος) από το αρχείο XML

Σημείωση:

Το όνομα κόμβου και το θυγατρικό όνομα ετικέτας είναι τα τυπικά ονόματα ή ιδιότητες ενός χώρου XML.

Βήμα 3) Καλέστε τη λίστα ετικετών XML από το έγγραφο XML και εκτυπώστε

Στη συνέχεια, μπορούμε επίσης να καλέσουμε τη λίστα των ετικετών XML από το έγγραφο XML και να την εκτυπώσουμε. Εδώ εκτυπώσαμε το σύνολο δεξιοτήτων όπως η SQL, Python, Δοκιμές και Επιχειρήσεις.

Ανάλυση XML χρησιμοποιώντας minidom

  • Δηλώστε τη μεταβλητή τεχνογνωσία, από την οποία θα εξαγάγουμε όλη την ονομασία εμπειρογνωμοσύνης που έχει ο υπάλληλος
  • Χρησιμοποιήστε την τυπική συνάρτηση dom που ονομάζεται "getElementsByTagName"
  • Αυτό θα πάρει όλα τα στοιχεία που ονομάζονται δεξιότητα
  • Δηλώστε βρόχο σε κάθε μία από τις ετικέτες δεξιοτήτων
  • Εκτελέστε τον κωδικό - Θα δώσει μια λίστα με τέσσερις δεξιότητες

Πώς να γράψετε τον κόμβο XML

Μπορούμε να δημιουργήσουμε ένα νέο χαρακτηριστικό χρησιμοποιώντας τη συνάρτηση «createElement» και στη συνέχεια να προσθέσουμε αυτό το νέο χαρακτηριστικό ή ετικέτα στις υπάρχουσες ετικέτες XML. Προσθέσαμε μια νέα ετικέτα "BigData" στο αρχείο XML μας.

  1. Πρέπει να κωδικοποιήσετε για να προσθέσετε το νέο χαρακτηριστικό (BigData) στην υπάρχουσα ετικέτα XML
  2. Στη συνέχεια, πρέπει να εκτυπώσετε την ετικέτα 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"