# `xml.parsers.expat` — Γρήγορη ανάλυση XML χρησιμοποιώντας το Expat

Σημείωση

Εάν χρειάζεται να αναλύσετε μη αξιόπιστα ή μη πιστοποιημένα δεδομένα, δείτε XML security.

The `xml.parsers.expat` module is a Python interface to the Expat non-validating XML parser. The module provides a single extension type, `xmlparser`, that represents the current state of an XML parser. After an `xmlparser` object has been created, various attributes of the object can be set to handler functions. When an XML document is then fed to the parser, the handler functions are called for the character data and markup in the XML document.

Αυτό το module χρησιμοποιεί το `pyexpat` module για να παρέχει πρόσβαση στον αναλυτή Expat. Η άμεση χρήση του `pyexpat` module δεν συνιστάται πλέον.

Αυτό το module παρέχει μια εξαίρεση και έναν τύπο αντικειμένου:

exception xml.parsers.expat.ExpatError

  Η εξαίρεση γίνεται raise όταν το Expat αναφέρει ένα σφάλμα. Δείτε την ενότητα Εξαιρέσεις ExpatError για περισσότερες πληροφορίες σχετικά με την ερμηνεία σφαλμάτων Expat.

exception xml.parsers.expat.error

  Ψευδώνυμο για `ExpatError`.

xml.parsers.expat.XMLParserType

  Ο τύπος των τιμών επιστροφής από τη συνάρτηση `ParserCreate()`.

The `xml.parsers.expat` module contains two functions:

xml.parsers.expat.ErrorString(errno)

  Επιστρέφει μια επεξηγηματική συμβολοσειρά για έναν δεδομένο αριθμό σφάλματος errno.

xml.parsers.expat.ParserCreate(encoding=None, namespace_separator=None)

  Δημιουργεί και επιστρέφει ένα νέο αντικείμενο `xmlparser`. Το encoding, εάν καθοριστεί, πρέπει να είναι μια συμβολοσειρά που ονομάζει την κωδικοποίηση που χρησιμοποιείται από τα δεδομένα XML. Το Expat δεν υποστηρίζει τόσες πολλές κωδικοποιήσεις όσες η Python, και το ρεπερτόριό του από κωδικοποιήσεις δεν μπορεί να επεκταθεί· υποστηρίζει UTF-8, UTF-16, ISO-8859-1 (Latin1) και ASCII. Εάν δοθεί το encoding [1], θα αντικαταστήσει την έμμεση ή ρητή κωδικοποίηση του εγγράφου.

  Οι αναλυτές που δημιουργούνται μέσω `ParserCreate()` ονομάζονται αναλυτές «ρίζας», με την έννοια ότι δεν έχουν συνδεδεμένο κανέναν γονικό αναλυτή. Οι μη ριζικοί αναλυτές δημιουργούνται από το `parser.ExternalEntityParserCreate`.

  Το Expat μπορεί προαιρετικά να κάνει επεξεργασία χώρων ονομάτων XML για εσάς, εφόσον ενεργοποιηθεί με την παροχή μιας τιμής στο namespace_separator. Η τιμή πρέπει να είναι μια συμβολοσειρά ενός χαρακτήρα· διαφορετικά θα γίνει raise μια `ValueError` εάν το μήκος της συμβολοσειράς είναι μη έγκυρο (το `None` θεωρείται το ίδιο με το να μην δοθεί καθόλου τιμή). Όταν είναι ενεργοποιημένη η επεξεργασία χώρων ονομάτων, τα ονόματα τύπων στοιχείων και τα ονόματα χαρακτηριστικών που ανήκουν σε έναν χώρο ονομάτων θα επεκταθούν. Το όνομα στοιχείου που περνάει στους χειριστές στοιχείων `StartElementHandler` και `EndElementHandler` θα είναι ο συνδυασμός του URI χώρου ονομάτων, του χαρακτήρα διαχωρισμού χώρου ονομάτων και του τοπικού μέρους του ονόματος. Εάν ο διαχωριστής χώρου ονομάτων είναι ένα μηδενικό byte (`chr(0)`) τότε το URI χώρου ονομάτων και το τοπικό μέρος θα συνδυαστούν χωρίς κανέναν διαχωριστή.

  Για παράδειγμα, εάν το namespace_separator οριστεί σε χαρακτήρα κενό (`' '`) και αναλυθεί το ακόλουθο έγγραφο:

      <?xml version="1.0"?>
      <root xmlns    = "http://default-namespace.org/"
            xmlns:py = "http://www.python.org/ns/">
        <py:elem1 />
        <elem2 xmlns="" />
      </root>

  Το χαρακτηριστικό `StartElementHandler` θα λάβει τις ακόλουθες συμβολοσειρές για κάθε στοιχείο:

      http://default-namespace.org/ root
      http://www.python.org/ns/ elem1
      elem2

  Λόγω περιορισμών στη βιβλιοθήκη `Expat` που χρησιμοποιείται από το `pyexpat`, η αντικείμενη `xmlparser` που επιστρέφεται μπορεί να χρησιμοποιηθεί μόνο για την ανάλυση ενός μεμονωμένου εγγράφου XML. Καλέστε `ParserCreate` για κάθε έγγραφο για να παρέχετε μοναδικά στιγμιότυπα αναλυτών.

Δείτε επίσης

The Expat XML Parser

  Αρχική σελίδα του έργου Expat.

## Αντικείμενα XMLParser

Τα `xmlparser` αντικείμενα έχουν τις ακόλουθες μεθόδους:

xmlparser.Parse(data[, isfinal])

  Αναλύει τα περιεχόμενα της συμβολοσειράς data, καλώντας τις κατάλληλες συναρτήσεις χειρισμού για την επεξεργασία των αναλυμένων δεδομένων. Το isfinal πρέπει να είναι true στην τελική κλήση αυτής της μεθόδου· επιτρέπει την ανάλυση ενός μεμονωμένου αρχείου σε θραύσματα, όχι την υποβολή πολλαπλών αρχείων. Το data μπορεί να είναι η κενή συμβολοσειρά οποιαδήποτε στιγμή.

xmlparser.ParseFile(file)

  Αναλύει δεδομένα XML διαβάζοντας από το αντικείμενο file. Το file απαιτείται μόνο να παρέχει τη μέθοδο `read(nbytes)`, επιστρέφοντας την κενή συμβολοσειρά όταν δεν υπάρχουν άλλα δεδομένα.

xmlparser.SetBase(base)

  Ορίζει τη βάση που θα χρησιμοποιηθεί για την επίλυση σχετικών URI σε αναγνωριστικά συστήματος μέσα σε δηλώσεις. Η επίλυση σχετικών αναγνωριστικών αφήνεται στην εφαρμογή: αυτή η τιμή θα περαστεί ως όρισμα base στις συναρτήσεις `ExternalEntityRefHandler()`, `NotationDeclHandler()` και `UnparsedEntityDeclHandler()`.

xmlparser.GetBase()

  Επιστρέφει μια συμβολοσειρά που περιέχει τη βάση που ορίστηκε από μια προηγούμενη κλήση στο `SetBase()`, ή `None` εάν το `SetBase()` δεν έχει κληθεί.

xmlparser.GetInputContext()

  Επιστρέφει τα δεδομένα εισόδου που δημιουργήθηκαν από το τρέχον γεγονός ως συμβολοσειρά. Τα δεδομένα είναι στην κωδικοποίηση της οντότητας που περιέχει το κείμενο. Όταν καλείται ενώ δεν είναι ενεργός κάποιος χειριστής γεγονότος, η τιμή επιστροφής είναι `None`.

xmlparser.ExternalEntityParserCreate(context[, encoding])

  Δημιουργεί έναν «θυγατρικό» αναλυτή που μπορεί να χρησιμοποιηθεί για την ανάλυση μιας εξωτερικής αναλυμένης οντότητας που αναφέρεται από το περιεχόμενο που αναλύεται από τον γονικό αναλυτή. Η παράμετρος context πρέπει να είναι η συμβολοσειρά που περνάει στη συνάρτηση χειρισμού `ExternalEntityRefHandler()`, που περιγράφεται παρακάτω. Ο παιδικός αναλυτής δημιουργείται με τα `ordered_attributes` και `specified_attributes` ορισμένα στις τιμές αυτού του αναλυτή.

xmlparser.SetParamEntityParsing(flag)

  Ελέγχει την ανάλυση των οντοτήτων παραμέτρων (συμπεριλαμβανομένου του εξωτερικού υποσυνόλου DTD). Οι πιθανές τιμές flag είναι `XML_PARAM_ENTITY_PARSING_NEVER`, `XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE` και `XML_PARAM_ENTITY_PARSING_ALWAYS`. Επιστρέφει true εάν ο ορισμός της σημαίας ήταν επιτυχής.

xmlparser.UseForeignDTD([flag])

  Η κλήση αυτού με μια αληθή τιμή για το flag (η προεπιλογή) θα προκαλέσει το Expat να καλέσει το `ExternalEntityRefHandler` με `None` για όλα τα ορίσματα για να επιτρέψει τη φόρτωση ενός εναλλακτικού DTD. Εάν το έγγραφο δεν περιέχει δήλωση τύπου εγγράφου, το `ExternalEntityRefHandler` θα κληθεί ακόμα, αλλά το `StartDoctypeDeclHandler` και `EndDoctypeDeclHandler` δεν θα κληθούν.

  Η μετάδοση μιας ψευδούς τιμής για το flag θα ακυρώσει μια προηγούμενη κλήση που πέρασε μια αληθή τιμή, αλλά διαφορετικά δεν έχει καμία επίδραση.

  Αυτή η μέθοδος μπορεί να κληθεί μόνο πριν κληθούν οι μέθοδοι `Parse()` ή `ParseFile()`; η κλήση της μετά από οποιαδήποτε από αυτές θα προκαλέσει `ExpatError` να γίνει raise με το χαρακτηριστικό `code` ορισμένο σε `errors.codes[errors.XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING]`.

xmlparser.SetReparseDeferralEnabled(enabled)

  Προειδοποίηση

  Η κλήση `SetReparseDeferralEnabled(False)` έχει επιπτώσεις στην ασφάλεια, όπως αναλυτικά παρακάτω· βεβαιωθείτε ότι κατανοείτε αυτές τις συνέπειες πριν από τη χρήση της μεθόδου `SetReparseDeferralEnabled`.

  Το Expat 2.6.0 εισήγαγε έναν μηχανισμό ασφάλειας που ονομάζεται «αναβολή επανεπεξεργασίας» όπου αντί να προκαλείται άρνηση υπηρεσίας μέσω τετραγωνικού χρόνου εκτέλεσης από την επανεπεξεργασία μεγάλων token, η επανεπεξεργασία μη ολοκληρωμένων token τώρα καθυστερείται από προεπιλογή μέχρι να φτάσει μια επαρκής ποσότητα εισόδου. Λόγω αυτής της καθυστέρησης, οι καταχωρημένοι χειριστές μπορεί — ανάλογα με το μέγεθος των τμημάτων εισόδου που ωθούνται στο Expat — να μην καλούνται αμέσως μετά την ώθηση νέας εισόδου στον αναλυτή. Όπου επιθυμείται άμεση ανατροφοδότηση και ανάληψη ευθύνης για την προστασία από την άρνηση υπηρεσίας από μεγάλα token, η κλήση `SetReparseDeferralEnabled(False)` απενεργοποιεί την αναβολή επανεπεξεργασίας για το τρέχον στιγμιότυπο αναλυτή Expat, προσωρινά ή συνολικά. Η κλήση `SetReparseDeferralEnabled(True)` επιτρέπει την επανενεργοποίηση της αναβολής επανεπεξεργασίας.

  `SetReparseDeferralEnabled()` has been backported to some prior releases of CPython as a security fix. Check for availability using `hasattr()` if used in code running across a variety of Python versions.

  Added in version 3.13.

xmlparser.GetReparseDeferralEnabled()

  Επιστρέφει εάν η αναβολή επανεπεξεργασίας είναι επί του παρόντος ενεργοποιημένη για το δεδομένο στιγμιότυπο αναλυτή Expat.

  Added in version 3.13.

`xmlparser` objects have the following methods to tune protections against some common XML vulnerabilities.

xmlparser.SetBillionLaughsAttackProtectionActivationThreshold(threshold, /)

  Sets the number of output bytes needed to activate protection against billion laughs attacks.

  The number of output bytes includes amplification from entity expansion and reading DTD files.

  Parser objects usually have a protection activation threshold of 8 MiB, but the actual default value depends on the underlying Expat library.

  Γίνεται raise `ExpatError` εάν αυτή η μέθοδος κληθεί σε έναν non-root αναλυτή. Τα αντίστοιχα `lineno` και `offset` δεν πρέπει να χρησιμοποιούνται καθώς μπορεί να μην έχουν καμία ειδική σημασία.

  `SetBillionLaughsAttackProtectionActivationThreshold()` has been backported to some prior releases of CPython as a security fix. Check for availability using `hasattr()` if used in code running across a variety of Python versions.

  Σημείωση

  Activation thresholds below 4 MiB are known to break support for DITA 1.3 payload and are hence not recommended.

  Added in version 3.15.

xmlparser.SetBillionLaughsAttackProtectionMaximumAmplification(max_factor, /)

  Sets the maximum tolerated amplification factor for protection against billion laughs attacks.

  The amplification factor is calculated as `(direct + indirect) / direct` while parsing, where `direct` is the number of bytes read from the primary document in parsing and `indirect` is the number of bytes added by expanding entities and reading of external DTD files.

  The max_factor value must be a non-NaN `float` value greater than or equal to 1.0. Peak amplifications of factor 15,000 for the entire payload and of factor 30,000 in the middle of parsing have been observed with small benign files in practice. In particular, the activation threshold should be carefully chosen to avoid false positives.

  Parser objects usually have a maximum amplification factor of 100, but the actual default value depends on the underlying Expat library.

  Γίνεται raise `ExpatError` εάν αυτή η μέθοδος κληθεί σε έναν non-root αναλυτή ή εάν το max_factor είναι εκτός του έγκυρου εύρους. Τα αντίστοιχα `lineno` και `offset` δεν πρέπει να χρησιμοποιούνται καθώς μπορεί να μην έχουν καμία ειδική σημασία.

  `SetBillionLaughsAttackProtectionMaximumAmplification()` has been backported to some prior releases of CPython as a security fix. Check for availability using `hasattr()` if used in code running across a variety of Python versions.

  Σημείωση

  The maximum amplification factor is only considered if the threshold that can be adjusted by `SetBillionLaughsAttackProtectionActivationThreshold()` is exceeded.

  Added in version 3.15.

xmlparser.SetAllocTrackerActivationThreshold(threshold, /)

  Ορίζει τον αριθμό των δεσμευμένων byte δυναμικής μνήμης που απαιτούνται για την ενεργοποίηση της προστασίας κατά της δυσανάλογης χρήσης RAM.

  Parser objects usually have an allocation activation threshold of 64 MiB, but the actual default value depends on the underlying Expat library.

  Γίνεται raise `ExpatError` εάν αυτή η μέθοδος κληθεί σε έναν non-root αναλυτή. Τα αντίστοιχα `lineno` και `offset` δεν πρέπει να χρησιμοποιούνται καθώς μπορεί να μην έχουν καμία ειδική σημασία.

  `SetAllocTrackerActivationThreshold()` has been backported to some prior releases of CPython as a security fix. Check for availability using `hasattr()` if used in code running across a variety of Python versions.

  Added in version 3.15.

xmlparser.SetAllocTrackerMaximumAmplification(max_factor, /)

  Ορίζει τον μέγιστο παράγοντα ενίσχυσης μεταξύ άμεσης εισόδου και byte δυναμικής μνήμης που έχουν δεσμευτεί.

  Ο παράγοντας ενίσχυσης υπολογίζεται ως `allocated / direct` κατά την ανάλυση, όπου το `direct` είναι ο αριθμός των byte που διαβάστηκαν από το κύριο έγγραφο στην ανάλυση και το `allocated` είναι ο αριθμός των byte δυναμικής μνήμης που έχουν δεσμευτεί στην ιεραρχία αναλυτών.

  Η τιμή max_factor πρέπει να είναι μια μη-NaN `float` τιμή μεγαλύτερη ή ίση του 1.0. Παράγοντες ενίσχυσης μεγαλύτεροι από 100.0 μπορούν να παρατηρηθούν κοντά στην αρχή της ανάλυσης ακόμη και με ακίνδυνα αρχεία στην πράξη. Ειδικότερα, το όριο ενεργοποίησης πρέπει να επιλεγεί προσεκτικά για να αποφευχθούν ψευδώς θετικά.

  Parser objects usually have a maximum amplification factor of 100, but the actual default value depends on the underlying Expat library.

  Γίνεται raise `ExpatError` εάν αυτή η μέθοδος κληθεί σε έναν non-root αναλυτή ή εάν το max_factor είναι εκτός του έγκυρου εύρους. Τα αντίστοιχα `lineno` και `offset` δεν πρέπει να χρησιμοποιούνται καθώς μπορεί να μην έχουν καμία ειδική σημασία.

  `SetAllocTrackerMaximumAmplification()` has been backported to some prior releases of CPython as a security fix. Check for availability using `hasattr()` if used in code running across a variety of Python versions.

  Σημείωση

  Ο μέγιστος παράγοντας ενίσχυσης λαμβάνεται υπόψιν μόνο εάν ξεπεραστεί το όριο ενεργοποίησης που μπορεί να προσαρμοστεί από το `SetAllocTrackerActivationThreshold()`.

  Added in version 3.15.

Τα `xmlparser` αντικείμενα έχουν τα ακόλουθα χαρακτηριστικά:

xmlparser.buffer_size

  Το μέγεθος του buffer που χρησιμοποιείται όταν το `buffer_text` είναι true. Ένα νέο μέγεθος buffer μπορεί να οριστεί εκχωρώντας μια νέα ακέραια τιμή σε αυτό το χαρακτηριστικό. Όταν αλλάζει το μέγεθος, το buffer θα εκκενωθεί.

xmlparser.buffer_text

  Ο ορισμός αυτού σε true προκαλεί το αντικείμενο `xmlparser` να αποθηκεύει σε buffer το κειμενικό περιεχόμενο που επιστρέφεται από το Expat για να αποφευχθούν πολλαπλές κλήσεις στην ανάκληση `CharacterDataHandler()` όποτε είναι δυνατόν. Αυτό μπορεί να βελτιώσει σημαντικά την απόδοση καθώς το Expat κανονικά διασπά τα δεδομένα χαρακτήρων σε θραύσματα σε κάθε αλλαγή γραμμής. Αυτό το χαρακτηριστικό είναι false από προεπιλογή, και μπορεί να αλλάξει οποιαδήποτε στιγμή. Σημειώστε ότι όταν είναι false, τα δεδομένα που δεν περιέχουν αλλαγές γραμμών μπορεί επίσης να διασπαστούν.

xmlparser.buffer_used

  Εάν το `buffer_text` είναι ενεργοποιημένο, ο αριθμός των byte που αποθηκεύονται στο buffer. Αυτά τα byte αντιπροσωπεύουν κείμενο κωδικοποιημένο σε UTF-8. Αυτό το χαρακτηριστικό δεν έχει καμία ουσιαστική ερμηνεία όταν το `buffer_text` είναι false.

xmlparser.ordered_attributes

  Ο ορισμός αυτού του χαρακτηριστικού σε έναν μη μηδενικό ακέραιο προκαλεί τα χαρακτηριστικά να αναφέρονται ως λίστα αντί για λεξικό. Τα χαρακτηριστικά παρουσιάζονται με τη σειρά που βρέθηκαν στο κείμενο του εγγράφου. Για κάθε χαρακτηριστικό, παρουσιάζονται δύο καταχωρήσεις λίστας: το όνομα του χαρακτηριστικού και η τιμή του χαρακτηριστικού. (Παλαιότερες εκδόσεις αυτού του module χρησιμοποιούσαν επίσης αυτή τη μορφή.) Από προεπιλογή, αυτό το χαρακτηριστικό είναι false· μπορεί να αλλάξει οποιαδήποτε στιγμή.

xmlparser.specified_attributes

  Εάν οριστεί σε έναν μη μηδενικό ακέραιο, ο αναλυτής θα αναφέρει μόνο εκείνα τα χαρακτηριστικά που καθορίστηκαν στο παράδειγμα εγγράφου και όχι εκείνα που προέκυψαν από δηλώσεις χαρακτηριστικών. Οι εφαρμογές που το ορίζουν αυτό πρέπει να είναι ιδιαίτερα προσεκτικές στη χρήση των πρόσθετων πληροφοριών που είναι διαθέσιμες από τις δηλώσεις όπως απαιτείται για τη συμμόρφωση με τα πρότυπα για τη συμπεριφορά των επεξεργαστών XML. Από προεπιλογή, αυτό το χαρακτηριστικό είναι false· μπορεί να αλλάξει οποιαδήποτε στιγμή.

Τα ακόλουθα χαρακτηριστικά περιέχουν τιμές που σχετίζονται με το πιο πρόσφατο σφάλμα που αντιμετωπίστηκε από ένα αντικείμενο `xmlparser`, και θα έχουν σωστές τιμές μόνο όταν μια κλήση στο `Parse()` ή `ParseFile()` έχει προκαλέσει μια εξαίρεση `xml.parsers.expat.ExpatError`.

xmlparser.ErrorByteIndex

  Δείκτης byte στον οποίο συνέβη ένα σφάλμα.

xmlparser.ErrorCode

  Αριθμητικός κωδικός που προσδιορίζει το πρόβλημα. Αυτή η τιμή μπορεί να περαστεί στη συνάρτηση `ErrorString()`, ή να συγκριθεί με μία από τις σταθερές που ορίζονται στο αντικείμενο `errors`.

xmlparser.ErrorColumnNumber

  Αριθμός στήλης στον οποίο συνέβη ένα σφάλμα.

xmlparser.ErrorLineNumber

  Αριθμός γραμμής στον οποίο συνέβη ένα σφάλμα.

Τα ακόλουθα χαρακτηριστικά περιέχουν τιμές που σχετίζονται με την τρέχουσα θέση ανάλυσης σε ένα αντικείμενο `xmlparser`. Κατά τη διάρκεια μιας ανάκλησης που αναφέρει ένα γεγονός ανάλυσης, υποδεικνύουν τη θέση της πρώτης από τη σειρά χαρακτήρων που δημιούργησαν το γεγονός. Όταν καλείται εκτός μιας ανάκλησης, η υποδεικνυόμενη θέση θα είναι ακριβώς μετά το τελευταίο γεγονός ανάλυσης (ανεξάρτητα από το αν υπήρχε μια σχετική ανάκληση).

xmlparser.CurrentByteIndex

  Τρέχων δείκτης byte στην είσοδο του αναλυτή.

xmlparser.CurrentColumnNumber

  Τρέχων αριθμός στήλης στην είσοδο του αναλυτή.

xmlparser.CurrentLineNumber

  Τρέχων αριθμός γραμμής στην είσοδο του αναλυτή.

Εδώ είναι η λίστα των χειριστών που μπορούν να οριστούν. Για να ορίσετε έναν χειριστή σε ένα αντικείμενο `xmlparser` o, χρησιμοποιήστε `o.handlername = func`. Το handlername πρέπει να ληφθεί από την ακόλουθη λίστα, και το func πρέπει να είναι ένα αντικείμενο που μπορεί να κληθεί αποδεχόμενο τον σωστό αριθμό ορισμάτων. Τα ορίσματα είναι όλες συμβολοσειρές, εκτός εάν αναφέρεται διαφορετικά.

xmlparser.XmlDeclHandler(version, encoding, standalone)

  Καλείται όταν αναλύεται η δήλωση XML. Η δήλωση XML είναι η (προαιρετική) δήλωση της εφαρμοστέας έκδοσης της σύστασης XML, της κωδικοποίησης του κειμένου του εγγράφου, και μια προαιρετική «αυτόνομη» δήλωση. Το version και το encoding θα είναι συμβολοσειρές, και το standalone θα είναι `1` εάν το έγγραφο δηλώνεται αυτόνομο, `0` εάν δηλώνεται ότι δεν είναι αυτόνομο, ή `-1` εάν η ρήτρα αυτόνομης παραλείφθηκε. Αυτό είναι διαθέσιμο μόνο με την έκδοση 1.95.0 ή νεότερη του Expat.

xmlparser.StartDoctypeDeclHandler(doctypeName, systemId, publicId, has_internal_subset)

  Called when Expat begins parsing the document type declaration (`<!DOCTYPE ...`). The doctypeName is provided exactly as presented. The systemId and publicId parameters give the system and public identifiers if specified, or `None` if omitted. has_internal_subset will be true if the document contains an internal document declaration subset. This requires Expat version 1.2 or newer.

xmlparser.EndDoctypeDeclHandler()

  Καλείται όταν το Expat ολοκληρώνει την ανάλυση της δήλωσης τύπου εγγράφου. Αυτό απαιτεί Expat έκδοσης 1.2 ή νεότερης.

xmlparser.ElementDeclHandler(name, model)

  Καλείται μία φορά για κάθε δήλωση τύπου στοιχείου. Το name είναι το όνομα του τύπου στοιχείου, και το model είναι μια αναπαράσταση του μοντέλου περιεχομένου.

xmlparser.AttlistDeclHandler(elname, attname, type, default, required)

  Καλείται για κάθε δηλωμένο χαρακτηριστικό για έναν τύπο στοιχείου. Εάν μια δήλωση λίστας χαρακτηριστικών δηλώνει τρία χαρακτηριστικά, αυτός ο χειριστής καλείται τρεις φορές, μία για κάθε χαρακτηριστικό. Το elname είναι το όνομα του στοιχείου στο οποίο εφαρμόζεται η δήλωση και το attname είναι το όνομα του δηλωμένου χαρακτηριστικού. Ο τύπος χαρακτηριστικού είναι μια συμβολοσειρά που περνάει ως type· οι πιθανές τιμές είναι `'CDATA'`, `'ID'`, `'IDREF'`, … το default δίνει την προεπιλεγμένη τιμή για το χαρακτηριστικό που χρησιμοποιείται όταν το χαρακτηριστικό δεν καθορίζεται από το παράδειγμα εγγράφου, ή `None` εάν δεν υπάρχει προεπιλεγμένη τιμή (τιμές `#IMPLIED`). Εάν το χαρακτηριστικό απαιτείται να δοθεί στο παράδειγμα εγγράφου, το required θα είναι true. Αυτό απαιτεί Expat έκδοση 1.95.0 ή νεότερης.

xmlparser.StartElementHandler(name, attributes)

  Καλείται για την έναρξη κάθε στοιχείου. Το name είναι μια συμβολοσειρά που περιέχει το όνομα του στοιχείου, και το attributes είναι τα χαρακτηριστικά του στοιχείου. Εάν το `ordered_attributes` είναι true, αυτό είναι μια λίστα (δείτε το `ordered_attributes` για μια πλήρη περιγραφή). Διαφορετικά είναι ένα λεξικό που αντιστοιχίζει ονόματα σε τιμές.

xmlparser.EndElementHandler(name)

  Καλείται για το τέλος κάθε στοιχείου.

xmlparser.ProcessingInstructionHandler(target, data)

  Καλείται για κάθε οδηγία επεξεργασίας.

xmlparser.CharacterDataHandler(data)

  Καλείται για δεδομένα χαρακτήρων. Αυτό θα κληθεί για κανονικά δεδομένα χαρακτήρων, περιεχόμενο επισημασμένο ως CDATA, και αγνοήσιμο κενό χώρο. Οι εφαρμογές που πρέπει να διακρίνουν αυτές τις περιπτώσεις μπορούν να χρησιμοποιήσουν τις ανακλήσεις `StartCdataSectionHandler`, `EndCdataSectionHandler`, και `ElementDeclHandler` για να συλλέξουν τις απαιτούμενες πληροφορίες. Σημειώστε ότι τα δεδομένα χαρακτήρων μπορεί να διασπαστούν ακόμη και αν είναι μικρά και έτσι μπορεί να λάβετε περισσότερες από μία κλήσεις στο `CharacterDataHandler()`. Ορίστε το χαρακτηριστικό στιγμιότυπου `buffer_text` σε `True` για να αποφύγετε αυτό.

xmlparser.UnparsedEntityDeclHandler(entityName, base, systemId, publicId, notationName)

  Καλείται για δηλώσεις μη αναλυμένων (NDATA) οντοτήτων. Αυτό είναι παρόν μόνο για την έκδοση 1.2 της βιβλιοθήκης Expat· για πιο πρόσφατες εκδόσεις, χρησιμοποιήστε `EntityDeclHandler` αντ” αυτού. (Η υποκείμενη λειτουργία στη βιβλιοθήκη Expat έχει κηρυχθεί απαρχαιωμένη.)

xmlparser.EntityDeclHandler(entityName, is_parameter_entity, value, base, systemId, publicId, notationName)

  Καλείται για όλες τις δηλώσεις οντοτήτων. Για παραμετρικές και εσωτερικές οντότητες, το value θα είναι μια συμβολοσειρά που δίνει τα δηλωμένα περιεχόμενα της οντότητας· αυτό θα είναι `None` για εξωτερικές οντότητες. Η παράμετρος notationName θα είναι `None` για αναλυμένες οντότητες, και το όνομα της σημειογραφίας για μη αναλυμένες οντότητες. Το is_parameter_entity θα είναι true εάν η οντότητα είναι μια παραμετρική οντότητα ή false για γενικές οντότητες (οι περισσότερες εφαρμογές χρειάζεται να ασχολούνται μόνο με γενικές οντότητες). Αυτό είναι διαθέσιμο μόνο ξεκινώντας από την έκδοση 1.95.0 της βιβλιοθήκης Expat.

xmlparser.NotationDeclHandler(notationName, base, systemId, publicId)

  Καλείται για δηλώσεις σημειογραφίας. Το notationName, base, και systemId, και publicId είναι συμβολοσειρές εάν δίνονται. Εάν το δημόσιο αναγνωριστικό παραλείπεται, το publicId θα είναι `None`.

xmlparser.StartNamespaceDeclHandler(prefix, uri)

  Καλείται όταν ένα στοιχείο περιέχει μια δήλωση χώρου ονομάτων. Οι δηλώσεις χώρων ονομάτων επεξεργάζονται πριν κληθεί ο `StartElementHandler` για το στοιχείο στο οποίο τοποθετούνται οι δηλώσεις.

xmlparser.EndNamespaceDeclHandler(prefix)

  Καλείται όταν επιτευχθεί η ετικέτα κλεισίματος για ένα στοιχείο που περιείχε μια δήλωση χώρου ονομάτων. Αυτό καλείται μία φορά για κάθε δήλωση χώρου ονομάτων στο στοιχείο με την αντίστροφη σειρά για την οποία κλήθηκε ο `StartNamespaceDeclHandler` για να υποδείξει την έναρξη της εμβέλειας κάθε δήλωσης χώρου ονομάτων. Οι κλήσεις σε αυτόν τον χειριστή γίνονται μετά τον αντίστοιχο `EndElementHandler` για το τέλος του στοιχείου.

xmlparser.CommentHandler(data)

  Καλείται για σχόλια. Το data είναι το κείμενο του σχολίου, εξαιρώντας το προκαταρκτικό `'<!-``-'` και το τελικό `'-``->'`.

xmlparser.StartCdataSectionHandler()

  Καλείται στην αρχή μιας ενότητας CDATA. Αυτό και το `EndCdataSectionHandler` είναι απαραίτητα για να μπορέσουμε να αναγνωρίσουμε την συντακτική έναρξη και το τέλος για τις ενότητες CDATA.

xmlparser.EndCdataSectionHandler()

  Καλείται στο τέλος μιας ενότητας CDATA.

xmlparser.DefaultHandler(data)

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

xmlparser.DefaultHandlerExpand(data)

  Αυτό είναι το ίδιο με το `DefaultHandler()`, αλλά δεν εμποδίζει την επέκταση εσωτερικών οντοτήτων. Η αναφορά οντότητας δεν θα περαστεί στον προεπιλεγμένο χειριστή.

xmlparser.NotStandaloneHandler()

  Καλείται εάν το έγγραφο XML δεν έχει δηλωθεί ως αυτόνομο έγγραφο. Αυτό συμβαίνει όταν υπάρχει ένα εξωτερικό υποσύνολο ή μια αναφορά σε μια παραμετρική οντότητα, αλλά η δήλωση XML δεν ορίζει το standalone σε `yes` σε μια δήλωση XML. Εάν αυτός ο χειριστής επιστρέψει `0`, τότε ο αναλυτής θα προκαλέσει ένα σφάλμα `XML_ERROR_NOT_STANDALONE`. Εάν αυτός ο χειριστής δεν έχει οριστεί, δεν γίνεται raise καμία εξαίρεση από τον αναλυτή για αυτή την κατάσταση.

xmlparser.ExternalEntityRefHandler(context, base, systemId, publicId)

  Προειδοποίηση

  Η υλοποίηση ενός χειριστή που έχει πρόσβαση σε τοπικά αρχεία και/ή στο δίκτυο μπορεί να δημιουργήσει μια ευπάθεια σε external entity attacks <https://en.wikipedia.org/wiki/XML_external_entity_attack> εάν το `xmlparser` χρησιμοποιείται με περιεχόμενο XML που παρέχεται από τον χρήστη. Σκεφτείτε το threat model σας πριν υλοποιήσετε αυτόν τον χειριστή.

  Καλείται για αναφορές σε εξωτερικές οντότητες. Το base είναι η τρέχουσα βάση, όπως ορίζεται από μια προηγούμενη κλήση στο `SetBase()`. Τα δημόσια και συστημικά αναγνωριστικά, systemId και publicId, είναι συμβολοσειρές εάν δίνονται· εάν το δημόσιο αναγνωριστικό δεν δίνεται, το publicId θα είναι `None`. Η τιμή context είναι αδιαφανής και πρέπει να χρησιμοποιείται μόνο όπως περιγράφεται παρακάτω.

  Για να αναλυθούν εξωτερικές οντότητες, αυτός ο χειριστής πρέπει να υλοποιηθεί. Είναι υπεύθυνος για τη δημιουργία του υπο-αναλυτή χρησιμοποιώντας `ExternalEntityParserCreate(context)`, την αρχικοποίηση του με τις κατάλληλες ανακλήσεις, και την ανάλυση της οντότητας. Αυτός ο χειριστής πρέπει να επιστρέψει έναν ακέραιο· εάν επιστρέψει `0`, ο αναλυτής θα προκαλέσει ένα σφάλμα `XML_ERROR_EXTERNAL_ENTITY_HANDLING`, διαφορετικά η ανάλυση θα συνεχιστεί.

  Εάν αυτός ο χειριστής δεν παρέχεται, οι εξωτερικές οντότητες αναφέρονται από την ανάκληση `DefaultHandler`, εάν παρέχεται.

## Εξαιρέσεις ExpatError

Οι εξαιρέσεις `ExpatError` έχουν έναν αριθμό ενδιαφερόντων χαρακτηριστικών:

ExpatError.code

  Ο εσωτερικός αριθμός σφάλματος του Expat για το συγκεκριμένο σφάλμα. Το `errors.messages` λεξικό αντιστοιχεί αυτούς τους αριθμούς σφάλματος στα μηνύματα σφαλμάτων του Expat. Για παράδειγμα:

      from xml.parsers.expat import ParserCreate, ExpatError, errors

      p = ParserCreate()
      try:
          p.Parse(some_xml_document)
      except ExpatError as err:
          print("Error:", errors.messages[err.code])

  Το module `errors` παρέχει επίσης σταθερές μηνυμάτων σφαλμάτων και ένα λεξικό `codes` που αντιστοιχίζει αυτά τα μηνύματα πίσω στους κωδικούς σφαλμάτων, δείτε παρακάτω.

ExpatError.lineno

  Αριθμός γραμμής στον οποίο ανιχνεύθηκε το σφάλμα. Η πρώτη γραμμή αριθμείται `1`.

ExpatError.offset

  Χαρακτήρας μετατόπισης στη γραμμή όπου συνέβη το σφάλμα. Η πρώτη στήλη αριθμείται `0`.

## Παράδειγμα

Το ακόλουθο πρόγραμμα ορίζει τρεις χειριστές που απλώς εκτυπώνουν τα ορίσματά τους.

    import xml.parsers.expat

    # 3 handler functions
    def start_element(name, attrs):
        print('Start element:', name, attrs)
    def end_element(name):
        print('End element:', name)
    def char_data(data):
        print('Character data:', repr(data))

    p = xml.parsers.expat.ParserCreate()

    p.StartElementHandler = start_element
    p.EndElementHandler = end_element
    p.CharacterDataHandler = char_data

    p.Parse("""<?xml version="1.0"?>
    <parent id="top"><child1 name="paul">Text goes here</child1>
    <child2 name="fred">More text</child2>
    </parent>""", 1)

Η έξοδος από αυτό το πρόγραμμα είναι:

    Start element: parent {'id': 'top'}
    Start element: child1 {'name': 'paul'}
    Character data: 'Text goes here'
    End element: child1
    Character data: '\n'
    Start element: child2 {'name': 'fred'}
    Character data: 'More text'
    End element: child2
    Character data: '\n'
    End element: parent

## Περιγραφές Μοντέλου Περιεχομένου

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

The values of the first two fields are constants defined in the `xml.parsers.expat.model` module. These constants can be collected in two groups: the model type group and the quantifier group.

Οι σταθερές στην ομάδα τύπου μοντέλου είναι:

xml.parsers.expat.model.XML_CTYPE_ANY

  Το στοιχείο που ονομάζεται από το όνομα μοντέλου δηλώθηκε ότι έχει ένα μοντέλο περιεχομένου `ANY`.

xml.parsers.expat.model.XML_CTYPE_CHOICE

  Το ονομαζόμενο στοιχείο επιτρέπει μια επιλογή από έναν αριθμό επιλογών· αυτό χρησιμοποιείται για μοντέλα περιεχομένου όπως `(A | B | C)`.

xml.parsers.expat.model.XML_CTYPE_EMPTY

  Στοιχεία που δηλώνονται ως `EMPTY` έχουν αυτόν τον τύπο μοντέλου.

xml.parsers.expat.model.XML_CTYPE_MIXED

xml.parsers.expat.model.XML_CTYPE_NAME

xml.parsers.expat.model.XML_CTYPE_SEQ

  Τα μοντέλα που αντιπροσωπεύουν μια σειρά μοντέλων που ακολουθούν το ένα το άλλο υποδεικνύονται με αυτόν τον τύπο μοντέλου. Αυτό χρησιμοποιείται για μοντέλα όπως `(A, B, C)`.

Οι σταθερές στην ομάδα ποσοτικών δεικτών είναι:

xml.parsers.expat.model.XML_CQUANT_NONE

  Δεν δίνεται κανένας τροποποιητής, οπότε μπορεί να εμφανιστεί ακριβώς μία φορά, όπως για `A`.

xml.parsers.expat.model.XML_CQUANT_OPT

  Το μοντέλο είναι προαιρετικό: μπορεί να εμφανιστεί μία φορά ή καθόλου, όπως για `A?`.

xml.parsers.expat.model.XML_CQUANT_PLUS

  Το μοντέλο πρέπει να εμφανίζεται μία ή περισσότερες φορές (όπως `A+`).

xml.parsers.expat.model.XML_CQUANT_REP

  Το μοντέλο πρέπει να εμφανίζεται μηδέν ή περισσότερες φορές, όπως για `A*`.

## Σταθερές σφαλμάτων Expat

The following constants are provided in the `xml.parsers.expat.errors` module. These constants are useful in interpreting some of the attributes of the `ExpatError` exception objects raised when an error has occurred. Since for backwards compatibility reasons, the constants” value is the error message and not the numeric error code, you do this by comparing its `code` attribute with `errors.codes[errors.XML_ERROR_CONSTANT_NAME]`.

Το module `errors` έχει τα ακόλουθα χαρακτηριστικά:

xml.parsers.expat.errors.codes

  Ένα λεξικό που αντιστοιχίζει περιγραφές συμβολοσειρών στους κωδικούς σφαλμάτων τους.

  Added in version 3.2.

xml.parsers.expat.errors.messages

  Ένα λεξικό που αντιστοιχίζει αριθμητικούς κωδικούς σφαλμάτων στις περιγραφές συμβολοσειρών τους.

  Added in version 3.2.

xml.parsers.expat.errors.XML_ERROR_ASYNC_ENTITY

xml.parsers.expat.errors.XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF

  Μια αναφορά οντότητας σε μια τιμή χαρακτηριστικού αναφέρθηκε σε μια εξωτερική οντότητα αντί για μια εσωτερική οντότητα.

xml.parsers.expat.errors.XML_ERROR_BAD_CHAR_REF

  Μια αναφορά χαρακτήρα αναφέρθηκε σε έναν χαρακτήρα που είναι παράνομος στο XML (για παράδειγμα, ο χαρακτήρας `0`, ή “`&#0;`”).

xml.parsers.expat.errors.XML_ERROR_BINARY_ENTITY_REF

  Μια αναφορά οντότητας αναφέρθηκε σε μια οντότητα που δηλώθηκε με μια σημειογραφία, οπότε δεν μπορεί να αναλυθεί.

xml.parsers.expat.errors.XML_ERROR_DUPLICATE_ATTRIBUTE

  Ένα χαρακτηριστικό χρησιμοποιήθηκε περισσότερες από μία φορές σε μια ετικέτα έναρξης.

xml.parsers.expat.errors.XML_ERROR_INCORRECT_ENCODING

xml.parsers.expat.errors.XML_ERROR_INVALID_TOKEN

  Προκαλείται όταν ένα εισερχόμενο byte δεν μπορούσε να ανατεθεί σωστά σε έναν χαρακτήρα· για παράδειγμα, ένα byte NUL (τιμή `0`) σε μια ροή εισόδου UTF-8.

xml.parsers.expat.errors.XML_ERROR_JUNK_AFTER_DOC_ELEMENT

  Κάτι άλλο εκτός από κενό χώρο συνέβη μετά το στοιχείο εγγράφου.

xml.parsers.expat.errors.XML_ERROR_MISPLACED_XML_PI

  Βρέθηκε μια δήλωση XML κάπου αλλού εκτός από την αρχή των δεδομένων εισόδου.

xml.parsers.expat.errors.XML_ERROR_NO_ELEMENTS

  Το έγγραφο δεν περιέχει στοιχεία (το XML απαιτεί όλα τα έγγραφα να περιέχουν ακριβώς ένα στοιχείο κορυφαίου επιπέδου)..

xml.parsers.expat.errors.XML_ERROR_NO_MEMORY

  Το Expat δεν ήταν σε θέση να δεσμεύσει μνήμη εσωτερικά.

xml.parsers.expat.errors.XML_ERROR_PARAM_ENTITY_REF

  Βρέθηκε μια αναφορά παραμετρικής οντότητας όπου δεν επιτρέπεται.

xml.parsers.expat.errors.XML_ERROR_PARTIAL_CHAR

  Βρέθηκε ένας ατελής χαρακτήρας στην είσοδο.

xml.parsers.expat.errors.XML_ERROR_RECURSIVE_ENTITY_REF

  Μια αναφορά οντότητας περιείχε μια άλλη αναφορά στην ίδια οντότητα· πιθανώς μέσω ενός διαφορετικού ονόματος, και πιθανώς έμμεσα.

xml.parsers.expat.errors.XML_ERROR_SYNTAX

  Συνέβη κάποιο μη καθορισμένο συντακτικό σφάλμα.

xml.parsers.expat.errors.XML_ERROR_TAG_MISMATCH

  Μια ετικέτα λήξης δεν ταιριάζει με την πιο εσωτερική ανοιχτή ετικέτα έναρξης.

xml.parsers.expat.errors.XML_ERROR_UNCLOSED_TOKEN

  Κάποιο token (όπως μια ετικέτα έναρξης) δεν έκλεισε πριν το τέλος της ροής ή συναντήθηκε το επόμενο διακριτικό.

xml.parsers.expat.errors.XML_ERROR_UNDEFINED_ENTITY

  Έγινε αναφορά σε μια οντότητα που δεν ορίστηκε.

xml.parsers.expat.errors.XML_ERROR_UNKNOWN_ENCODING

  Η κωδικοποίηση εγγράφου δεν υποστηρίζεται από το Expat.

xml.parsers.expat.errors.XML_ERROR_UNCLOSED_CDATA_SECTION

  Μια ενότητα με σήμανση CDATA δεν έκλεισε.

xml.parsers.expat.errors.XML_ERROR_EXTERNAL_ENTITY_HANDLING

xml.parsers.expat.errors.XML_ERROR_NOT_STANDALONE

  Ο αναλυτής διαπίστωσε ότι το έγγραφο δεν ήταν «αυτόνομο» αν και το δήλωνε ότι ήταν στη δήλωση XML, και ο `NotStandaloneHandler` ορίστηκε και επέστρεψε `0`.

xml.parsers.expat.errors.XML_ERROR_UNEXPECTED_STATE

xml.parsers.expat.errors.XML_ERROR_ENTITY_DECLARED_IN_PE

xml.parsers.expat.errors.XML_ERROR_FEATURE_REQUIRES_XML_DTD

  An operation was requested that requires DTD support to be compiled in, but Expat was configured without DTD support. This should never be reported by a standard build of the `xml.parsers.expat` module.

xml.parsers.expat.errors.XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING

  Ζητήθηκε μια αλλαγή συμπεριφοράς μετά την έναρξη της ανάλυσης που μπορεί να αλλάξει μόνο πριν ξεκινήσει η ανάλυση. Αυτό (προς το παρόν) προκαλείται μόνο από τη `UseForeignDTD()`.

xml.parsers.expat.errors.XML_ERROR_UNBOUND_PREFIX

  Βρέθηκε ένα μη δηλωμένο πρόθεμα όταν η επεξεργασία χώρου ονομάτων ήταν ενεργοποιημένη.

xml.parsers.expat.errors.XML_ERROR_UNDECLARING_PREFIX

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

xml.parsers.expat.errors.XML_ERROR_INCOMPLETE_PE

  Μια παραμετρική οντότητα περιείχε ατελή σήμανση.

xml.parsers.expat.errors.XML_ERROR_XML_DECL

  Το έγγραφο δεν περιείχε καθόλου στοιχείο εγγράφου.

xml.parsers.expat.errors.XML_ERROR_TEXT_DECL

  Υπήρξε σφάλμα κατά την ανάλυση μιας δήλωσης κειμένου σε μια εξωτερική οντότητα.

xml.parsers.expat.errors.XML_ERROR_PUBLICID

  Βρέθηκαν χαρακτήρες στο δημόσιο αναγνωριστικό που δεν επιτρέπονται.

xml.parsers.expat.errors.XML_ERROR_SUSPENDED

  Η ζητούμενη λειτουργία πραγματοποιήθηκε σε έναν αναλυτή που είχε ανασταλεί, αλλά δεν επιτρέπεται. Αυτό περιλαμβάνει προσπάθειες παροχής επιπλέον εισόδου ή διακοπής του αναλυτή.

xml.parsers.expat.errors.XML_ERROR_NOT_SUSPENDED

  Έγινε μια προσπάθεια να συνεχιστεί ο αναλυτής όταν ο αναλυτής δεν είχε ανασταλεί.

xml.parsers.expat.errors.XML_ERROR_ABORTED

  Αυτό δεν θα πρέπει να αναφέρεται σε εφαρμογές Python.

xml.parsers.expat.errors.XML_ERROR_FINISHED

  Η ζητούμενη λειτουργία πραγματοποιήθηκε σε έναν αναλυτή που ολοκλήρωσε την ανάλυση της εισόδου, αλλά δεν επιτρέπεται. Αυτό περιλαμβάνει προσπάθειες παροχής επιπλέον εισόδου ή διακοπής του αναλυτή.

xml.parsers.expat.errors.XML_ERROR_SUSPEND_PE

xml.parsers.expat.errors.XML_ERROR_RESERVED_PREFIX_XML

  Έγινε μια προσπάθεια να ακυρωθεί η δήλωση του δεσμευμένου προθέματος χώρου ονομάτων `xml` ή να το συνδέσει με ένα άλλο URI χώρου ονομάτων.

xml.parsers.expat.errors.XML_ERROR_RESERVED_PREFIX_XMLNS

  Έγινε μια προσπάθεια να δηλωθεί ή να ακυρωθεί η δήλωση του δεσμευμένου προθέματος χώρου ονομάτων `xmlns`.

xml.parsers.expat.errors.XML_ERROR_RESERVED_NAMESPACE_URI

  Έγινε μια προσπάθεια να δεσμευτεί το URI ενός από τα δεσμευμένα προθέματα χώρου ονομάτων `xml` και `xmlns` σε ένα άλλο πρόθεμα χώρου ονομάτων.

xml.parsers.expat.errors.XML_ERROR_INVALID_ARGUMENT

  Αυτό δεν θα πρέπει να αναφέρεται σε εφαρμογές Python.

xml.parsers.expat.errors.XML_ERROR_NO_BUFFER

  Αυτό δεν θα πρέπει να αναφέρεται σε εφαρμογές Python.

xml.parsers.expat.errors.XML_ERROR_AMPLIFICATION_LIMIT_BREACH

  Το όριο στον παράγοντα ενίσχυσης εισόδου (από DTD και οντότητες) έχει παραβιαστεί.

xml.parsers.expat.errors.XML_ERROR_NOT_STARTED

  Ο αναλυτής προσπάθησε να σταματήσει ή να ανασταλεί πριν ξεκινήσει.

  Added in version 3.14.

Υποσημειώσεις

[1]

Η συμβολοσειρά κωδικοποίησης που περιλαμβάνεται στην έξοδο XML θα πρέπει να συμμορφώνεται με τα κατάλληλα πρότυπα. Για παράδειγμα, το «UTF-8» είναι έγκυρο, αλλά το «UTF8» δεν είναι. Δείτε https://www.w3.org/TR/2006/REC-xml11-20060816/#NT-EncodingDecl και https://www.iana.org/assignments/character-sets/character-sets.xhtml.