xml.parsers.expat — Snabb XML-parsning med hjälp av Expat


Anteckning

Om du behöver analysera otillförlitliga eller oautentiserade data, se XML-säkerhet.

Modulen xml.parsers.expat är ett Python-gränssnitt till den icke-validerande XML-parsern Expat. Modulen tillhandahåller en enda förlängningstyp, xmlparser, som representerar det aktuella tillståndet för en XML-parser. Efter att ett xmlparser-objekt har skapats kan olika attribut för objektet ställas in på hanterarfunktioner. När ett XML-dokument sedan matas in i parsern anropas hanterarfunktionerna för teckendata och markeringar i XML-dokumentet.

Denna modul använder modulen pyexpat för att ge tillgång till Expat-parsern. Direkt användning av modulen pyexpat är föråldrad.

Denna modul innehåller ett undantag och ett typobjekt:

exception xml.parsers.expat.ExpatError

Det undantag som tas upp när Expat rapporterar ett fel. Se avsnitt ExpatError-undantag för mer information om hur du tolkar Expat-fel.

exception xml.parsers.expat.error

Alias för ExpatError.

xml.parsers.expat.XMLParserType

Typ av returvärden från funktionen ParserCreate().

Modulen xml.parsers.expat innehåller två funktioner:

xml.parsers.expat.ErrorString(errno)

Returnerar en förklarande sträng för ett givet felnummer errno.

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

Skapar och returnerar ett nytt xmlparser-objekt. encoding, om det anges, måste vara en sträng som namnger den kodning som används av XML-data. Expat stöder inte lika många kodningar som Python gör, och dess repertoar av kodningar kan inte utökas; den stöder UTF-8, UTF-16, ISO-8859-1 (Latin1) och ASCII. Om encoding [1] anges kommer det att åsidosätta den implicita eller explicita kodningen av dokumentet.

Expat kan valfritt göra XML-namnrymdsbehandling åt dig, vilket aktiveras genom att ange ett värde för namespace_separator. Värdet måste vara en sträng med ett tecken; ett ValueError kommer att uppstå om strängen har en olaglig längd (None anses vara samma sak som utelämnande). När bearbetning av namnrymder är aktiverad expanderas namn på elementtyper och attributnamn som tillhör en namnrymd. Elementnamnet som skickas till elementhanterarna StartElementHandler och EndElementHandler kommer att vara en sammankoppling av namnrymds-URI:n, namnrymdsavgränsaren och den lokala delen av namnet. Om namnrymdsavgränsaren är en nollbyte (chr(0)) kommer namnrymds-URI:n och den lokala delen att konkateneras utan någon avgränsare.

Till exempel, om namespace_separator är inställt på ett mellanslag (' ') och följande dokument analyseras:

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

StartElementHandler kommer att få följande strängar för varje element:

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

På grund av begränsningar i biblioteket Expat som används av pyexpat, kan den returnerade xmlparser-instansen endast användas för att analysera ett enda XML-dokument. Anropa ParserCreate för varje dokument för att tillhandahålla unika parserinstanser.

Se även

The Expat XML Parser

Webbsidan för Expat-projektet.

XMLParser-objekt

xmlparser-objekt har följande metoder:

xmlparser.Parse(data[, isfinal])

Analyserar innehållet i strängen data och anropar lämpliga hanterarfunktioner för att bearbeta de analyserade data. isfinal måste vara true vid det sista anropet till denna metod; den tillåter parsning av en enda fil i fragment, inte inlämning av flera filer. data kan när som helst vara en tom sträng.

xmlparser.ParseFile(file)

Analyserar XML-data som läses från objektet file. file behöver bara tillhandahålla metoden read(nbytes), som returnerar den tomma strängen när det inte finns mer data.

xmlparser.SetBase(base)

Anger den bas som ska användas för att lösa relativa URI:er i systemidentifierare i deklarationer. Upplösning av relativa identifierare lämnas till programmet: detta värde kommer att skickas som base-argumentet till funktionerna ExternalEntityRefHandler(), NotationDeclHandler() och UnparsedEntityDeclHandler().

xmlparser.GetBase()

Returnerar en sträng som innehåller den bas som ställdes in av ett tidigare anrop till SetBase(), eller None om SetBase() inte har anropats.

xmlparser.GetInputContext()

Returnerar indata som genererade den aktuella händelsen som en sträng. Data är i kodningen för den enhet som innehåller texten. När en händelsehanterare inte är aktiv returneras värdet None.

xmlparser.ExternalEntityParserCreate(context[, encoding])

Skapa en ”underordnad” parser som kan användas för att parsa en extern parsad entitet som refereras till av innehåll som parsats av den överordnade parsern. Parametern context bör vara den sträng som skickas till hanterarfunktionen ExternalEntityRefHandler(), som beskrivs nedan. Den underordnade parsern skapas med ordered_attributes och specified_attributes satta till värdena för denna parser.

xmlparser.SetParamEntityParsing(flag)

Styr parsning av parameterentiteter (inklusive den externa DTD-delmängden). Möjliga flag-värden är XML_PARAM_ENTITY_PARSING_NEVER, XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE och XML_PARAM_ENTITY_PARSING_ALWAYS. Returnerar true om inställningen av flaggan var lyckad.

xmlparser.UseForeignDTD([flag])

Om detta anropas med ett sant värde för flag (standard) kommer Expat att anropa ExternalEntityRefHandler med None för alla argument för att tillåta att en alternativ DTD laddas. Om dokumentet inte innehåller någon dokumenttypsdeklaration kommer ExternalEntityRefHandler fortfarande att anropas, men StartDoctypeDeclHandler och EndDoctypeDeclHandler kommer inte att anropas.

Om du anger ett falskt värde för flag avbryts ett tidigare anrop som angav ett sant värde, men i övrigt har det ingen effekt.

Denna metod kan endast anropas innan metoderna Parse() eller ParseFile() anropas; om den anropas efter att någon av dem har anropats kommer ExpatError att anropas med attributet code inställt på errors.codes[errors.XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING].

xmlparser.SetReparseDeferralEnabled(enabled)

Varning

Att anropa SetReparseDeferralEnabled(False) har säkerhetskonsekvenser, som beskrivs nedan; se till att förstå dessa konsekvenser innan du använder metoden SetReparseDeferralEnabled.

Expat 2.6.0 införde en säkerhetsmekanism som kallas ”reparse deferral”, där reparationen av oavslutade tokens nu som standard fördröjs tills en tillräcklig mängd indata har uppnåtts, istället för att orsaka ”denial of service” genom kvadratisk körtid från reparationen av stora tokens. På grund av denna fördröjning kan det hända att registrerade hanterare - beroende på storleken på de indatabitar som skickas till Expat - inte längre anropas direkt efter att ny indata har skickats till parsern. Om omedelbar återkoppling och övertagande av ansvaret för att skydda mot överbelastningsattacker från stora tokens båda är önskvärda, kan anrop av SetReparseDeferralEnabled(False) inaktivera reparse-deferral för den aktuella Expat-parserinstansen, tillfälligt eller helt och hållet. Anrop av SetReparseDeferralEnabled(True) gör det möjligt att återaktivera reparse deferral.

Observera att SetReparseDeferralEnabled() har backporterats till vissa tidigare utgåvor av CPython som en säkerhetsfix. Kontrollera tillgängligheten av SetReparseDeferralEnabled() med hasattr() om den används i kod som körs i flera olika Python-versioner.

Tillagd i version 3.13.

xmlparser.GetReparseDeferralEnabled()

Returnerar om reparse deferral för närvarande är aktiverat för den angivna Expat-parserinstansen.

Tillagd i version 3.13.

xmlparser-objekt har följande attribut:

xmlparser.buffer_size

Storleken på den buffert som används när buffer_text är true. En ny buffertstorlek kan ställas in genom att tilldela ett nytt heltalsvärde till detta attribut. När storleken ändras kommer bufferten att tömmas.

xmlparser.buffer_text

Om du ställer in detta till true buffrar xmlparser-objektet textinnehåll som returneras av Expat för att undvika flera anrop till CharacterDataHandler()-callbacken när så är möjligt. Detta kan förbättra prestandan avsevärt eftersom Expat normalt delar upp teckendata i bitar vid varje radavslutning. Detta attribut är falskt som standard och kan ändras när som helst. Observera att när det är falskt kan data som inte innehåller nya rader också delas upp i bitar.

xmlparser.buffer_used

Om buffer_text är aktiverat, antalet byte som lagras i bufferten. Dessa byte representerar UTF-8-kodad text. Detta attribut har ingen meningsfull tolkning när buffer_text är false.

xmlparser.ordered_attributes

Om detta attribut anges till ett heltal som inte är noll rapporteras attributen som en lista i stället för som en ordbok. Attributen presenteras i den ordning som de förekommer i dokumenttexten. För varje attribut visas två listposter: attributets namn och attributets värde. (Äldre versioner av denna modul använde också detta format.) Som standard är detta attribut falskt, men det kan ändras när som helst.

xmlparser.specified_attributes

Om värdet är ett heltal som inte är noll kommer parsern endast att rapportera de attribut som specificerades i dokumentinstansen och inte de som härleddes från attributdeklarationer. Program som anger detta måste vara särskilt noga med att använda den ytterligare information som finns tillgänglig från deklarationerna för att följa standarderna för XML-processorer. Som standard är detta attribut falskt, men det kan ändras när som helst.

Följande attribut innehåller värden som relaterar till det senaste felet som ett xmlparser-objekt har stött på, och kommer endast att ha korrekta värden när ett anrop till Parse() eller ParseFile() har gett upphov till ett xml.parsers.expat.ExpatError-undantag.

xmlparser.ErrorByteIndex

Byteindex där ett fel inträffade.

xmlparser.ErrorCode

Numerisk kod som anger problemet. Detta värde kan skickas till funktionen ErrorString() eller jämföras med en av de konstanter som definieras i objektet errors.

xmlparser.ErrorColumnNumber

Kolumnnummer där ett fel inträffade.

xmlparser.ErrorLineNumber

Radnummer där ett fel inträffade.

Följande attribut innehåller värden som relaterar till den aktuella platsen för parsning i ett xmlparser-objekt. Under en callback som rapporterar en parse-händelse anger de platsen för det första tecknet i den sekvens av tecken som genererade händelsen. När de anropas utanför en callback kommer den angivna positionen att vara strax efter den senaste parse-händelsen (oavsett om det fanns en associerad callback).

xmlparser.CurrentByteIndex

Aktuellt byteindex i parserns indata.

xmlparser.CurrentColumnNumber

Aktuellt kolumnnummer i parserns indata.

xmlparser.CurrentLineNumber

Aktuellt radnummer i parserns inmatning.

Här är listan över handläggare som kan ställas in. För att ställa in en hanterare på ett xmlparser-objekt o, använd o.handlername = func. handlername måste hämtas från följande lista och func måste vara ett anropbart objekt som accepterar rätt antal argument. Argumenten är alla strängar, om inget annat anges.

xmlparser.XmlDeclHandler(version, encoding, standalone)

Anropas när XML-deklarationen har analyserats. XML-deklarationen är den (valfria) deklarationen av den tillämpliga versionen av XML-rekommendationen, kodningen av dokumenttexten och en valfri ”standalone”-deklaration. version och encoding kommer att vara strängar, och standalone kommer att vara 1 om dokumentet deklareras vara fristående, 0 om det deklareras att det inte är fristående, eller -1 om klausulen om fristående utelämnades. Detta är endast tillgängligt med Expat version 1.95.0 eller nyare.

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

Anropas när Expat börjar analysera dokumenttypsdeklarationen (<!DOCTYPE ...). Parametern doctypeName tillhandahålls exakt som den presenteras. Parametrarna systemId och publicId ger system- och offentliga identifierare om de anges, eller None om de utelämnas. has_internal_subset kommer att vara true om dokumentet innehåller en intern delmängd av dokumentdeklarationen. Detta kräver Expat version 1.2 eller nyare.

xmlparser.EndDoctypeDeclHandler()

Anropas när Expat är klar med att analysera dokumenttypsdeklarationen. Detta kräver Expat version 1.2 eller nyare.

xmlparser.ElementDeclHandler(name, model)

Anropas en gång för varje elementtypsdeklaration. name är namnet på elementtypen och model är en representation av innehållsmodellen.

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

Anropas för varje deklarerat attribut för en elementtyp. Om en attributlistdeklaration deklarerar tre attribut anropas denna hanterare tre gånger, en gång för varje attribut. elname är namnet på det element som deklarationen gäller för och attname är namnet på det deklarerade attributet. Attributtypen är en sträng som skickas som type; de möjliga värdena är 'CDATA', 'ID', 'IDREF', … default ger standardvärdet för attributet som används när attributet inte specificeras av dokumentinstansen, eller None om det inte finns något standardvärde (#IMPLIED-värden). Om det krävs att attributet anges i dokumentinstansen kommer required att vara true. Detta kräver Expat version 1.95.0 eller nyare.

xmlparser.StartElementHandler(name, attributes)

Anropas i början av varje element. name är en sträng som innehåller elementets namn och attributes är elementets attribut. Om ordered_attributes är true är detta en lista (se ordered_attributes för en fullständig beskrivning). Annars är det en ordbok som mappar namn till värden.

xmlparser.EndElementHandler(name)

Anropas i slutet av varje element.

xmlparser.ProcessingInstructionHandler(target, data)

Anropas för varje bearbetningsinstruktion.

xmlparser.CharacterDataHandler(data)

Anropas för teckendata. Detta anropas för normal teckeninformation, CDATA-markerat innehåll och obetydliga blanksteg. Program som måste skilja på dessa fall kan använda anropen StartCdataSectionHandler, EndCdataSectionHandler och ElementDeclHandler för att samla in den information som krävs. Observera att teckeninformationen kan vara uppdelad i bitar även om den är kort och att du därför kan få mer än ett anrop till CharacterDataHandler(). Sätt instansattributet buffer_text till True för att undvika detta.

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

Anropas för oanalyserade (NDATA) entitetsdeklarationer. Detta finns endast för version 1.2 av Expat-biblioteket; för nyare versioner, använd EntityDeclHandler istället. (Den underliggande funktionen i Expat-biblioteket har förklarats föråldrad)

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

Anropas för alla entitetsdeklarationer. För parameter och interna entiteter kommer value att vara en sträng som anger det deklarerade innehållet i entiteten; för externa entiteter kommer detta att vara None. Parametern notationName kommer att vara None för analyserade entiteter, och namnet på notationen för icke analyserade entiteter. is_parameter_entity kommer att vara true om entiteten är en parameterentitet eller false för allmänna entiteter (de flesta applikationer behöver bara bry sig om allmänna entiteter). Detta är endast tillgängligt från och med version 1.95.0 av Expat-biblioteket.

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

Anropas för notationsdeklarationer. notationName, base, och systemId, och publicId är strängar om de anges. Om den offentliga identifieraren utelämnas kommer publicId att vara None.

xmlparser.StartNamespaceDeclHandler(prefix, uri)

Anropas när ett element innehåller en namnrymdsdeklaration. Namnrymdsdeklarationer behandlas innan StartElementHandler anropas för det element som deklarationerna är placerade på.

xmlparser.EndNamespaceDeclHandler(prefix)

Anropas när den avslutande taggen har nåtts för ett element som innehöll en namnrymdsdeklaration. Detta anropas en gång för varje namnrymdsdeklaration på elementet i omvänd ordning mot den ordning som StartNamespaceDeclHandler anropades för att ange början på varje namnrymdsdeklarations omfattning. Anrop till denna hanterare görs efter motsvarande EndElementHandler för slutet av elementet.

xmlparser.CommentHandler(data)

Anropas för kommentarer. data är texten i kommentaren, exklusive den inledande '<!--' och den efterföljande '-->'.

xmlparser.StartCdataSectionHandler()

Anropas i början av ett CDATA-avsnitt. Denna och EndCdataSectionHandler behövs för att kunna identifiera den syntaktiska starten och slutet för CDATA-avsnitt.

xmlparser.EndCdataSectionHandler()

Anropas i slutet av ett CDATA-avsnitt.

xmlparser.DefaultHandler(data)

Anropas för alla tecken i XML-dokumentet för vilka ingen tillämplig hanterare har angetts. Detta innebär tecken som är en del av en konstruktion som kan rapporteras, men för vilka ingen hanterare har angetts.

xmlparser.DefaultHandlerExpand(data)

Detta är samma sak som DefaultHandler(), men hindrar inte expansion av interna entiteter. Enhetsreferensen kommer inte att skickas till standardhanteraren.

xmlparser.NotStandaloneHandler()

Anropas om XML-dokumentet inte har deklarerats som ett fristående dokument. Detta händer när det finns en extern delmängd eller en referens till en parameterenhet, men XML-deklarationen inte anger standalone till yes i en XML-deklaration. Om denna hanterare returnerar 0 kommer parsern att ge upphov till ett XML_ERROR_NOT_STANDALONE-fel. Om denna hanterare inte är inställd, kommer parsern inte att göra något undantag för detta villkor.

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

Anropas för referenser till externa enheter. base är den aktuella basen, som den ställts in genom ett tidigare anrop till SetBase(). De offentliga identifierarna och systemidentifierarna, systemId och publicId, är strängar om de anges; om den offentliga identifieraren inte anges kommer publicId att vara None. Värdet context är opakt och bör endast användas enligt beskrivningen nedan.

För att externa entiteter ska kunna analyseras måste denna hanterare implementeras. Den är ansvarig för att skapa sub-parsern med hjälp av ExternalEntityParserCreate(context), initiera den med lämpliga callbacks och parsa entiteten. Denna hanterare bör returnera ett heltal; om den returnerar 0 kommer parsern att ge upphov till ett XML_ERROR_EXTERNAL_ENTITY_HANDLING-fel, annars kommer parsningen att fortsätta.

Om denna hanterare inte tillhandahålls rapporteras externa enheter av DefaultHandler callback, om sådan tillhandahålls.

ExpatError-undantag

ExpatError-undantag har ett antal intressanta egenskaper:

ExpatError.code

Expats interna felnummer för det specifika felet. Ordboken errors.messages mappar dessa felnummer till Expats felmeddelanden. Till exempel:

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])

Modulen errors innehåller också konstanter för felmeddelanden och en ordbok codes som mappar dessa meddelanden tillbaka till felkoderna, se nedan.

ExpatError.lineno

Radnummer på vilken felet upptäcktes. Den första raden är numrerad 1.

ExpatError.offset

Teckenförskjutning i den rad där felet inträffade. Den första kolumnen är numrerad 0.

Exempel

Följande program definierar tre handlers som bara skriver ut sina argument.

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)

Utdata från detta program är:

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

Beskrivningar av innehållsmodeller

Innehållsmodeller beskrivs med hjälp av nästlade tupler. Varje tupel innehåller fyra värden: typ, kvantifierare, namn och en tupel med barn. Barn är helt enkelt ytterligare beskrivningar av innehållsmodeller.

Värdena i de två första fälten är konstanter som definieras i modulen xml.parsers.expat.model. Dessa konstanter kan samlas i två grupper: modelltypgruppen och kvantifieringsgruppen.

Konstanterna i modelltypgruppen är:

xml.parsers.expat.model.XML_CTYPE_ANY

Elementet med modellnamnet har deklarerats ha innehållsmodellen ANY.

xml.parsers.expat.model.XML_CTYPE_CHOICE

Det namngivna elementet gör det möjligt att välja mellan ett antal alternativ; detta används för innehållsmodeller som (A | B | C).

xml.parsers.expat.model.XML_CTYPE_EMPTY

Element som deklareras vara EMPTY har denna modelltyp.

xml.parsers.expat.model.XML_CTYPE_MIXED
xml.parsers.expat.model.XML_CTYPE_NAME
xml.parsers.expat.model.XML_CTYPE_SEQ

Modeller som representerar en serie av modeller som följer efter varandra anges med denna modelltyp. Detta används för modeller som (A, B, C).

Konstanterna i kvantifieringsgruppen är:

xml.parsers.expat.model.XML_CQUANT_NONE

Ingen modifierare anges, så det kan förekomma exakt en gång, som för A.

xml.parsers.expat.model.XML_CQUANT_OPT

Modellen är valfri: den kan förekomma en gång eller inte alls, som för A?.

xml.parsers.expat.model.XML_CQUANT_PLUS

Modellen måste förekomma en eller flera gånger (t.ex. A+).

xml.parsers.expat.model.XML_CQUANT_REP

Modellen måste förekomma noll eller flera gånger, som för A*.

Expat fel konstanter

Följande konstanter finns i modulen xml.parsers.expat.errors. Dessa konstanter är användbara för att tolka några av attributen hos ExpatError undantagsobjekt som uppstår när ett fel har inträffat. Eftersom konstanternas värde av bakåtkompatibilitetsskäl är felets meddelande och inte den numeriska felkoden*, gör du detta genom att jämföra dess attribut code med errors.codes[errors.XML_ERROR_CONSTANT_NAME].

Modulen errors har följande attribut:

xml.parsers.expat.errors.codes

En ordbok som mappar strängbeskrivningar till deras felkoder.

Tillagd i version 3.2.

xml.parsers.expat.errors.messages

En ordbok som mappar numeriska felkoder till deras strängbeskrivningar.

Tillagd i version 3.2.

xml.parsers.expat.errors.XML_ERROR_ASYNC_ENTITY
xml.parsers.expat.errors.XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF

En entitetsreferens i ett attributvärde hänvisade till en extern entitet i stället för en intern entitet.

xml.parsers.expat.errors.XML_ERROR_BAD_CHAR_REF

En teckenreferens hänvisade till ett tecken som är olagligt i XML (t.ex. tecknet 0, eller ’’).

xml.parsers.expat.errors.XML_ERROR_BINARY_ENTITY_REF

En entitetsreferens hänvisade till en entitet som deklarerades med en notation, så den kan inte analyseras.

xml.parsers.expat.errors.XML_ERROR_DUPLICATE_ATTRIBUTE

Ett attribut användes mer än en gång i en starttagg.

xml.parsers.expat.errors.XML_ERROR_INCORRECT_ENCODING
xml.parsers.expat.errors.XML_ERROR_INVALID_TOKEN

Utlöses när en inmatningsbyte inte kan tilldelas ett tecken på rätt sätt, t.ex. en NUL-byte (värde 0) i en UTF-8-inmatningsström.

xml.parsers.expat.errors.XML_ERROR_JUNK_AFTER_DOC_ELEMENT

Något annat än blanksteg förekom efter dokumentelementet.

xml.parsers.expat.errors.XML_ERROR_MISPLACED_XML_PI

En XML-deklaration hittades någon annanstans än i början av indata.

xml.parsers.expat.errors.XML_ERROR_NO_ELEMENTS

Dokumentet innehåller inga element (XML kräver att alla dokument innehåller exakt ett element på högsta nivån).

xml.parsers.expat.errors.XML_ERROR_NO_MEMORY

Expat kunde inte allokera minne internt.

xml.parsers.expat.errors.XML_ERROR_PARAM_ENTITY_REF

En referens till en parameterenhet hittades där den inte var tillåten.

xml.parsers.expat.errors.XML_ERROR_PARTIAL_CHAR

Ett ofullständigt tecken hittades i inmatningen.

xml.parsers.expat.errors.XML_ERROR_RECURSIVE_ENTITY_REF

En entitetsreferens innehåller en annan referens till samma entitet; eventuellt via ett annat namn och eventuellt indirekt.

xml.parsers.expat.errors.XML_ERROR_SYNTAX

Något ospecificerat syntaxfel har uppstått.

xml.parsers.expat.errors.XML_ERROR_TAG_MISMATCH

En sluttagg matchade inte den innersta öppna starttaggen.

xml.parsers.expat.errors.XML_ERROR_UNCLOSED_TOKEN

Någon token (t.ex. en starttagg) stängdes inte innan slutet av strömmen eller nästa token påträffades.

xml.parsers.expat.errors.XML_ERROR_UNDEFINED_ENTITY

En hänvisning gjordes till en enhet som inte var definierad.

xml.parsers.expat.errors.XML_ERROR_UNKNOWN_ENCODING

Dokumentkodningen stöds inte av Expat.

xml.parsers.expat.errors.XML_ERROR_UNCLOSED_CDATA_SECTION

En CDATA-markerad sektion stängdes inte.

xml.parsers.expat.errors.XML_ERROR_EXTERNAL_ENTITY_HANDLING
xml.parsers.expat.errors.XML_ERROR_NOT_STANDALONE

Parsern fastställde att dokumentet inte var ”standalone” trots att det deklarerade sig vara det i XML-deklarationen, och NotStandaloneHandler ställdes in och returnerade 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

En åtgärd begärdes som kräver att DTD-stöd kompileras in, men Expat konfigurerades utan DTD-stöd. Detta bör aldrig rapporteras av en standardutbyggnad av modulen xml.parsers.expat.

xml.parsers.expat.errors.XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING

En beteendeförändring begärdes efter att parsningen påbörjats som endast kan ändras innan parsningen har påbörjats. Detta är (för närvarande) endast möjligt med UseForeignDTD().

xml.parsers.expat.errors.XML_ERROR_UNBOUND_PREFIX

Ett odeklarerat prefix hittades när namnrymdsbehandling var aktiverad.

xml.parsers.expat.errors.XML_ERROR_UNDECLARING_PREFIX

Dokumentet försökte ta bort den namnrymdsdeklaration som är kopplad till ett prefix.

xml.parsers.expat.errors.XML_ERROR_INCOMPLETE_PE

En parameterenhet innehöll ofullständig märkning.

xml.parsers.expat.errors.XML_ERROR_XML_DECL

Dokumentet innehöll inget dokumentelement alls.

xml.parsers.expat.errors.XML_ERROR_TEXT_DECL

Det uppstod ett fel vid tolkningen av en textdeklaration i en extern enhet.

xml.parsers.expat.errors.XML_ERROR_PUBLICID

Tecken som inte är tillåtna hittades i det offentliga id:et.

xml.parsers.expat.errors.XML_ERROR_SUSPENDED

Den begärda åtgärden utfördes på en avbruten parser, men är inte tillåten. Detta inkluderar försök att tillhandahålla ytterligare indata eller att stoppa parsern.

xml.parsers.expat.errors.XML_ERROR_NOT_SUSPENDED

Ett försök att återuppta parsern gjordes när parsern inte hade avbrutits.

xml.parsers.expat.errors.XML_ERROR_ABORTED

Detta ska inte rapporteras till Python-applikationer.

xml.parsers.expat.errors.XML_ERROR_FINISHED

Den begärda åtgärden utfördes på en parser som var klar med att parsa indata, men som inte är tillåten. Detta inkluderar försök att tillhandahålla ytterligare indata eller att stoppa parsern.

xml.parsers.expat.errors.XML_ERROR_SUSPEND_PE
xml.parsers.expat.errors.XML_ERROR_RESERVED_PREFIX_XML

Ett försök gjordes att undeclare det reserverade namnrymdsprefixet xml eller att binda det till en annan namnrymds-URI.

xml.parsers.expat.errors.XML_ERROR_RESERVED_PREFIX_XMLNS

Ett försök gjordes att deklarera eller undeclare det reserverade namnrymdsprefixet xmlns.

xml.parsers.expat.errors.XML_ERROR_RESERVED_NAMESPACE_URI

Ett försök har gjorts att binda URI:n för ett av de reserverade namnrymdsprefixen xml och xmlns till ett annat namnrymdsprefix.

xml.parsers.expat.errors.XML_ERROR_INVALID_ARGUMENT

Detta ska inte rapporteras till Python-applikationer.

xml.parsers.expat.errors.XML_ERROR_NO_BUFFER

Detta ska inte rapporteras till Python-applikationer.

xml.parsers.expat.errors.XML_ERROR_AMPLIFICATION_LIMIT_BREACH

Gränsen för ingångsförstärkningsfaktor (från DTD och enheter) har överskridits.

xml.parsers.expat.errors.XML_ERROR_NOT_STARTED

Parsern försökte stoppas eller avbrytas innan den startade.

Tillagd i version 3.14.

Fotnoter