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 elementhanterarnaStartElementHandler
ochEndElementHandler
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 avpyexpat
, kan den returneradexmlparser
-instansen endast användas för att analysera ett enda XML-dokument. AnropaParserCreate
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()
ochUnparsedEntityDeclHandler()
.
- xmlparser.GetBase()¶
Returnerar en sträng som innehåller den bas som ställdes in av ett tidigare anrop till
SetBase()
, ellerNone
omSetBase()
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 medordered_attributes
ochspecified_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
ochXML_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
medNone
för alla argument för att tillåta att en alternativ DTD laddas. Om dokumentet inte innehåller någon dokumenttypsdeklaration kommerExternalEntityRefHandler
fortfarande att anropas, menStartDoctypeDeclHandler
ochEndDoctypeDeclHandler
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()
ellerParseFile()
anropas; om den anropas efter att någon av dem har anropats kommerExpatError
att anropas med attributetcode
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 metodenSetReparseDeferralEnabled
.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 avSetReparseDeferralEnabled(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 avSetReparseDeferralEnabled()
medhasattr()
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 tillCharacterDataHandler()
-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ärbuffer_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 objekteterrors
.
- 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, ellerNone
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, ellerNone
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 (seordered_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
ochElementDeclHandler
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 tillCharacterDataHandler()
. Sätt instansattributetbuffer_text
tillTrue
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 varaNone
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 motsvarandeEndElementHandler
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 returnerar0
kommer parsern att ge upphov till ettXML_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 varaNone
. 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 returnerar0
kommer parsern att ge upphov till ettXML_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 ordbokcodes
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 returnerade0
.
- 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
ochxmlns
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